Widziałem tak wiele pytań, a kłopoty jest - pytanie nie ma sensu. Nie są to samo, to trochę jak powiedzenie "Jak konwertować jabłko do cegły"?

Ale zazwyczaj podstawowe pytanie ma sens, to jest podejrzanie, które jest podejrzane.

To, co chcę zrobić, to:

  • Mam obiekt w światowej przestrzeni ramowej odniesienia z rotacji reprezentowaną przez Quaternion R.
  • Jeśli ten obiekt miał przenieść naprzód w stosunku do lokalnej ramy odniesienia, tj. Prosto wzdłuż lokalnej osi Z, o nominalnej ilości ...
  • ... Jaki byłby wektor3, którego (znormalizowane) komponenty reprezentują ten ruch w świecie ramie odniesienia?

Teraz myślę Odpowiedź brzmi

    Vector3 ans = R * Vector3.forward;

Czy to prawda, a jeśli tak, dlaczego? (Jeśli nie racja, to jaka jest odpowiedź?)

1
nmw01223 12 lipiec 2020, 09:03

1 odpowiedź

Najlepsza odpowiedź

Tak to jest poprawne.

Quaternion * Vector3 zabiera dany wektor i obraca go zgodnie z danym obrót.

Więc jeśli jest w zasadzie {R jest w zasadzie światowej przestrzeni obiektu transform.rotation Następnie wynik będzie obiektom lokalny do przodu (dodatni z) wektor jako wektor w światowej przestrzeni współrzędnych.


Możesz również bezpośrednio używać obiektu transform.forward wektor, który zasadniczo równa się transform.rotation * Vector3.forward

4
derHugo 12 lipiec 2020, 15:08