# I'm trying to figure out how to move the Snake with only two input keys, such as left and right.

Essentially, and I hope this is adequate explanation…but I’d like to be able to use just two input keys, such as left and right, to control the Snake. Such that if it’s going upwards, and I hit right twice, it’ll end up going down.(One 90 degree turn, and then another?)

I’ve tried looking this up on my own but I haven’t found anything that isn’t 3D.

At the moment I have four input keys for movement.

``````// Use this for initialization
void Start () {
GetComponent<Rigidbody2D>().velocity = Vector2.up * speed;
}

// Update is called once per frame
void Update () {

if (Input.GetKeyDown(upKey)
{
GetComponent<Rigidbody2D>().velocity = Vector2.up * speed;
speed += .5f;
}
else if (Input.GetKeyDown(downKey)
{
GetComponent<Rigidbody2D>().velocity = -Vector2.up * speed;
speed += .5f;
}
else if (Input.GetKeyDown(rightKey)
{
GetComponent<Rigidbody2D>().velocity = Vector2.right *  speed;
speed += .5f;
}
else if (Input.GetKeyDown(leftKey)
{
GetComponent<Rigidbody2D>().velocity = -Vector2.right *  speed;
speed += .5f;
}
}
``````

I’ve tried playing around with having multiple if/elseIf for different scenarios, but I’m met with limited success and I feel like I’m overly complicating the whole thing, if I’m not already doing so above.

Thank you for any and all help. Whilst I understand I could keep it the way it is, I wanted to change the controls to learn more and ended up lost.

try something like

``````          int direction;

if (Input.GetKeyDown(rightKey))
{
if(direction == 1) {
GetComponent<Rigidbody2D>().velocity = Vector2.right *  speed;
speed += .5f;
direction = 2;
}

else if(direction == 2) {
GetComponent<Rigidbody2D>().velocity = -Vector2.up *  speed;
speed += .5f;
direction = 3;
}

else if(direction == 3) {
GetComponent<Rigidbody2D>().velocity = -Vector2.right *  speed;
speed += .5f;
direction = 4;
}

else if(direction == 4) {
GetComponent<Rigidbody2D>().velocity = Vector2.up *  speed;
speed += .5f;
direction = 1;
}
}
``````

and then do the opposite for the left key?

You can use transform instead to Vector2 for the purpose that uses player current direction as a reference.

``````           int direction;

if(direction = 1) {
GetComponent<Rigidbody2D>().velocity = transform.right *  speed;
speed += .5f;
direction = 2;
}
else if(direction = 2) {
GetComponent<Rigidbody2D>().velocity = -transform.right *  speed;
speed += .5f;
direction = 1;

}
``````