Posts: 1
Threads: 1
Joined: Mar 2018
Reputation:
0
Czy ktoś wie, jak to zrobić? Używałem tej funkcji do obliczania kąta dla celowania w pewnym punkcie; Kod: Vector3 vecDelta = new Vector3 ((LocalHeadPosition, X - AimPosition, X), (LocalHeadPosition, Y - AimPosition, Y), (LocalHeadPosition, Z - AimPosition, Z)); float hyp = Math. Sqrt (vecDelta. X * vecDelta. X + vecDelta. Y * vecDelta. Y); FRotator ViewAngles = new FRotator (); ViewAngles. Pitch = - Math. Atan (vecDelta. Z / hyp) * (float) (180f / Math. PI); ViewAngles. Yaw = Math. Atan (vecDelta Y / vecDelta. X) * (float) (180f / Math. PI); ViewAngles. Rolka = 0f; Jednak teraz mam kąt (tj. Pitch -2 Yaw 70) i chciałbym znać punkt dla tego kąta. (dowolny punkt) Dzięki
Posts: 2
Threads: 0
Joined: Mar 2018
Reputation:
0
będziesz musiał użyć promienia śledzenia i uzyskać pozycję trafienia, ponieważ jest to lazer, który nie kolidowałby z niczym więc zasadniczo mógł to gdziekolwiek, patrz obraz poniżej Ten obraz został przeskalowany. Kliknij ten pasek, aby wyświetlić pełny obraz. Oryginalny obraz ma rozmiar 1120 x 472.
Posts: 2
Threads: 0
Joined: Apr 2018
Reputation:
0
Zacytować: Originally Posted by thehavatar Nie mogę użyć raytrace. Ale nie potrzebuję tego, by uderzyć w konkretny punkt ... Potrzebuję tylko punktu w tym kierunku, więc nie powinienem potrzebować śladu promienia możesz to zrobić za pomocą pozycji głowy + kątów do przodu i uzyskać punkt do określonej odległości od głowy i kątów Kod: void AngleVectors (const Vector3 i angle, Vector3 * forward) {float sp, sy, cp, cy; sy = sin (angle [1]); cy = cos (kąty [1]); sp = sin (kąty [0]); cp = cos (kąty [0]); if (forward) {forward -> x = cp * cy; forward -> y = cp * sy; forward -> z = - sp; }} Vector3 vecForward; const float distance = 2000.f; AngleVectors (vAngles, i vecForward); vecForward * = odległość; Vector3 point = pPlayer -> GetBonePosition (eBones :: HEAD) + vecForward;