# 4 Direction Movement Problem

Hello all,
Im trying to write a script that will allow my gameObject to move in 4 directions, however this is proving difficult. Now the gameObject still rotates to match the preferred direction (w,a,s,d), yet it only moves in the +z direction.

Any help is appreciated, thank you.

``````#pragma strict

public var walkSpeed : float = 1;

function Start ()
{

}

function Update ()
{
if (Input.GetKey(KeyCode.W))
{
walkSpeed=1;
transform.forward = new Vector3(0f, 0f, 1f);
transform.Translate(0, 0, Time.deltaTime);
animation.Play("Walk");
print("W pressed");
}
if (Input.GetKey(KeyCode.S))
{
walkSpeed=-1;
transform.forward = new Vector3(0f, 0f, -1f);
transform.Translate(0, 0, -Time.deltaTime);
animation.Play("Walk");
print("S pressed");
}
if (Input.GetKey(KeyCode.A))
{
walkSpeed=1;
transform.forward = new Vector3(-1f, 0f, 0f);
transform.Translate(-1, 0, 0);
animation.Play("Walk");
print("A pressed");
}
if (Input.GetKey(KeyCode.D))
{
walkSpeed=1;
transform.forward = new Vector3(1f, 0f, 0f);
transform.Translate(1, 0, 0);
animation.Play("Walk");
print("D pressed");
}
if(Input.anyKey == false)
{
animation.Stop();
walkSpeed=0;
}
}
``````

Ok, so I figured it out. The code I was looking for was:

``````transform.Translate(Vector3.forward*walkSpeed);
``````

–WHYME