Tworzenie gry w Unity

12
Witam, jakiś czas temu pytałem w czym tworzyć gry. No więc jest już początek. Podstawy, że podstawy pojęte i w sumie wszystko by było okej gdyby nie jeden problem ze sterowaniem. Podczas widoku platformowego (czyli od boku) wszystko jest okej. Kwestia taka, że chcę zrobić grę w rzucie izometrycznym (od góry). Niby nic trudnego. Grawitacja na 0, kod od skoku usunięty i dodatkowe 2 linijki pozwalające się poruszać po osi x. Wydawało by się to proste i jest ale efekt popierdolił całe sterowanie. Podczas gdy wciskam W to postać porusza się do góry i w prawo tak ok 45 stopni. Sytuacja gdy wciskam S jest odwrotna. Problem jest również taki, że jedno wciśnięcie powoduje, że postać rusza się w tym kierunku bez końca i nie można jej zatrzymać. Zmiana grawitacji też nie pomaga, bo co najwyżej postać nie leci w górę a biegnie po platformie. Poniżej kody ze skryptu od lewo prawo



if(Input.GetKey(KeyCode.D))
{
GetComponent<Rigidbody2D> ().velocity = new Vector2 (moveSpeed, GetComponent<Rigidbody2D>().velocity.y);
}

if(Input.GetKey(KeyCode.A))
{
GetComponent<Rigidbody2D> ().velocity = new Vector2 (-moveSpeed, GetComponent<Rigidbody2D>().velocity.y);
}


a tu góra dół


if(Input.GetKey(KeyCode.W))
{
GetComponent<Rigidbody2D> ().velocity = new Vector2 (moveSpeed, GetComponent<Rigidbody2D>().velocity.x);
}

if(Input.GetKey(KeyCode.S))
{
GetComponent<Rigidbody2D> ().velocity = new Vector2 (-moveSpeed, GetComponent<Rigidbody2D>().velocity.x);
}

Nie wiem czy ja coś zjebałem czy po prostu kod zły. Zanim usunąłem linijkę ze skokiem to chyba normalnie biegał lewo prawo. Z góry dzięki, płacę w demie gierki
0.049813032150269