Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Kąt do punktu XYZ na ekranie
#1
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
Reply
#2
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.
Reply
#3
Zacytować: Napisał pierwotnie DaRkWoRlD1337 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 https://i.imgur.com/Zyz8nde.png 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
Reply
#4
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;
Reply
#5
jeśli rozumiem poprawnie, masz kąt i chcesz poznać wektor tego kąta? w takim przypadku można użyć narzędzia FRotator.Vector () w celu przekształcenia go w wektor wektorowy, a następnie po prostu ustawić kamerę i zwiększyć ją o wyliczony wektor do przodu pomnożony przez żądaną wartość. http://api.unrealengine.com/INT/API/...tor/index.html Kod: FVector angle_to_vector = FRotator (- 2, 70, 0). Wektor (); FVector some_point = kamera. location + angle_to_vector [*]; // [] dla opcji opcjonalnej możesz W2S, jeśli chcesz mieć ekrany.
Reply




Users browsing this thread: 1 Guest(s)