When "W" is held, the character moves forward, but when "W" and "A" is held, movement completely stops
- by Vlad1k
I am making a 2D game, and when I hold the key "w", the player goes forward, but when I hold both "w" and "a", the movement stops completely, when I want it to go forward, while shifting to the left.
Here is my script:
var speed = 4;
function Update() {
// Make the character walk forward if "w" is being held
if(Input.GetKey("w")) {
rigidbody.velocity = transform.forward * speed;
}
// Stop the movement if "w" is not being held
if(Input.GetKeyUp("w")) {
rigidbody.velocity = transform.forward * 0;
}
// Make the character walk forward if "s" is being held
if(Input.GetKey("s")) {
rigidbody.velocity = transform.forward * -speed;
}
// Stop the movement if "s" is not being held
if(Input.GetKeyUp("s")) {
rigidbody.velocity = transform.forward * 0;
}
// Make the character walk left if "a" is being held
if(Input.GetKey("a")) {
rigidbody.velocity = transform.right * -speed;
}
// Stop the movement if "a" is not being held
if(Input.GetKeyUp("a")) {
rigidbody.velocity = transform.right * 0;
}
//Make the character walk right if "d" is being held
if(Input.GetKey("d")) {
rigidbody.velocity = transform.right * speed;
}
// Stop the movement if "d" is not being held
if(Input.GetKeyUp("d")) {
rigidbody.velocity = transform.right * 0;
}
}
PLEASE MAKE THE CODE BETTER! I AM NEW!
EDIT: Here is a video to show my problem.
http://www.screenr.com/3oxH
Here is the newest code:
var speed = 4f;
function Update() {
if(Input.GetKey("w")) {
rigidbody.velocity = transform.forward * speed;
} else if(Input.GetKey("s")) {
rigidbody.velocity = transform.forward * -speed;
} else if(Input.GetKey("a")) {
rigidbody.velocity = transform.right * -speed;
} else if(Input.GetKey("d")) {
rigidbody.velocity = transform.right * speed;
}
if(Input.GetKeyUp("w")) {
rigidbody.velocity = transform.forward * 0;
}
if(Input.GetKeyUp("s")) {
rigidbody.velocity = transform.forward * 0;
}
if(Input.GetKeyUp("a")) {
rigidbody.velocity = transform.right * 0;
}
if(Input.GetKey("d")) {
rigidbody.velocity = transform.right * speed;
}
if(Input.GetKeyUp("d")) {
rigidbody.velocity = transform.right * 0;
}
}