Cześć,
może Ci się przydać tracing.
Pobierz origin bytu, odejmij tak z 1000 na osi pionowej origin[2] i miedzy tymi punktami puść TraceLine.
Wersja z fakemeta
new Float:vfStart[3], Float:vfEnd[3];
new tr2 = create_tr2();
pev( ent, pev_origin, vfStart);
vfEnd[0] = vfStart[0];
vfEnd[1] = vfStart[1];
vfEnd[2] = vfStart[2] - 1000.0;
engfunc( EngFunc_TraceLine, vfStart, vfEnd, IGNORE_GLASS|IGNORE_MISSILE|IGNORE_MONSTERS, ent, tr2);
new Float:vfNormal[3];
get_tr2( tr2, TR_vecPlaneNormal, vfNormal );
Wektor vfNormal[] jest teraz wektorem prostopadłym do podłoża pod obiektem `ent`. Możesz go zamienić na kąt obrotu bytu np. angle_vector();
Będziesz musiał odwrócić któreś z osi przed angle_vector mnożąc przez -1, wydaje i się że pierwsze 2 osie. Tej części nie jestem pewien, ale to będziesz coś w stylu:
vfNormal[0] = -vfNormal[0];
vfNormal[1] = -vfNormal[1];
ange_vector( vfNormal, ANGLEVECTOR_FORWARD, vfNormal );
set_pev( ent, pev_angles, vfNormal );
Użytkownik undefined edytował ten post 23.02.2014 14:36