Witam serdecznie. Mam za zadanie zaprogramować ruch kulki oraz kamery w perspektywie trzeciej osoby, w 3D, w Unity na wersji 2018.2.14f1.
Całość ma działać na prostej zasadzie: Przy naciśnięciu klawisza "W" kulka porusza się do przodu względem świata (nadanie momentu obrotowego funkcją rigidbody.AddTorque(Vector3.right * 2f) powoduje nadanie momentu obrotowego względem konkretnej osi w świecie. Skutkuje to oczywiście tym, że gdy obrócę myszką kamerę wokół kuli, którą steruję, przy naciśnięciu klawisza "W" nie poruszam się kulą w kierunku, w którym patrzę. Ona dalej turla się do przodu względem świata.
Pobrałem wartość wektora transform.rotation z kamery i na jego podstawie próbowałem nadać moment obrotowy kuli względem tej kamery, ale, niestety, z marnym skutkiem.
Szukam zatem jakiegoś łatwego do zaimplementowania w kodzie sposobu na nadawanie momentu obrotowego w kierunku, w którym patrzymy. Jestem początkujący, wykonuję zadanie do tworzonej gry na zajęciach.
Mój kod w skrypcie podpiętym pod kulę:
FollowingCamera followingCamera = GameObject.Find("CameraBase").GetComponent<FollowingCamera>(); // pobranie komponentu kamery
float rotat = followingCamera.realRotY; // odczytanie obrotu KAMERY wokół osi Y
Vector3 direction = Vector3.zero; // utworzenie wektora kierunku
void moveForward() // podczas naciskania klawisza "W"
{
Vector3 tempRot = transform.localEulerAngles; // przypisanie nowemu wektorowi buforowemu wartości obrotu KULI wokół osi Y
tempRot.y = rotat; // nadanie osi Y w buforze wartości obrotu KAMERY wokół osi Y
transform.localEulerAngles = tempRot; // obrócenie KULI na pozycję, w którą skierowana jest KAMERA (chcemy w tym kierunku ruszyć)
direction = transform.right * 2f; // nadanie momentu obrotowego
}