- Home /
Hold down key for constantly movement problem
I am coding the ability to hold down the WASD keys in order to move the camera about. The problem is though when holding down the up key, the camera moves forwards only once and does not constantly move forwards. Any help with be greatly appreciated.
float speed_x = 10.0F;
float speed_y = 10.0F;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
float translation_x = Input.GetAxis ("Horizontal") * speed_x;
float translation_y = Input.GetAxis ("Vertical") * speed_y;
translation_x *= Time.deltaTime;
translation_y *= Time.deltaTime;
Camera.current.transform.Translate (new Vector3 (translation_x, 0, translation_y));
}
Answer by Em3rgency · Jul 03, 2013 at 11:06 PM
I didn't see anything wrong with your code offhand, so I tested it out. For some reason, Camera.current kept throwing a null pointer error. So I just attached the script to my camera, so I could remove the Camera.current reference. Also, I moved the translation variable declarations outside the update function. There is no point to re-declare the variables at EVERY frame render. Final code works like a charm.
public float speed_x = 10.0F;
public float speed_y = 10.0F;
private float translation_x;
private float translation_y;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
translation_x = Input.GetAxis ("Horizontal") * speed_x;
translation_y = Input.GetAxis ("Vertical") * speed_y;
translation_x *= Time.deltaTime;
translation_y *= Time.deltaTime;
transform.Translate (new Vector3 (translation_x, 0, translation_y));
}
Answer by ebogguess · Jul 03, 2013 at 09:51 PM
You are currently translating the camera by z, rather than y. Vector3 lists parameters as x, y, z. So you probably want :
Camera.current.transform.Translate (new Vector3 (translation_x, translation_y, 0));
Well the na$$anonymous$$g of the variables might be poor, but his version is not wrong. If making 2D plane camera movement, his code would move his camera correctly in a top-down view. Your code would move it correctly in a forward view.
Either way, that is nowhere close to what he was asking.
If he has his camera oriented incorrectly, the movement of said camera might be difficult to detect. He is asking about camera movement, so that's what I addressed. Cheers! :)
True, but your code only flips the orientation of the movement, his issue is continuous movement. Just saying ;)
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Cinemachine 2D move camera down on Button press 0 Answers
Clamping Camera doesn't work 1 Answer
Sprinting camera shake 1 Answer