Witam, od paru dni programuje w unity (skrypty w c#) i pojawił mi się problem z rotacją gracza.
Oto mój kawałek kodu:
if (arrowKey == KeyCode.UpArrow) { rote.AllYLast = rote.AllY; rote.AllY = 0; }
if (arrowKey == KeyCode.DownArrow) { rote.AllYLast = rote.AllY; rote.AllY = 180; }
if (arrowKey == KeyCode.LeftArrow) { rote.AllYLast = rote.AllY; rote.AllY = -90; }
if (arrowKey == KeyCode.RightArrow) { rote.AllYLast = rote.AllY; rote.AllY = 90; }
if (((kc == KeyCode.UpArrow && rote.AllYLast != 0) ||
(kc == KeyCode.DownArrow && rote.AllYLast != 180) ||
(kc == KeyCode.LeftArrow && rote.AllYLast != -90) ||
(kc == KeyCode.RightArrow && rote.AllYLast != 90) ) &&
kc != KeyCode.Print)
{
transform.rotation = new Quaternion(0, rote.AllY, 0, 0); //<--- To mnie interesuje i nie działa
}
Ustaliłem, że struktura rote ma dobre wartości. Przy rotacji 0 (Do przodu ('W')) jest wszystko dobrze, przy rotacji 180 (Do tyłu ('S')) też jest wszystko dobrze. Jednak przy rotacji 270 (W lewo ('A')) i 90 (w prawo (''D)) jest coś nie tak. Rotation się nie zmienia, (rote tak).
Film