# Move 2D object forward

I’ve been trying to make my object move forward in the direction it is facing. But I’ve been unable to do so.

I was trying to do it with MoveTowards(), and adding a gameobject in front of the boat to do it, but I can’t make it work(Direction is the object in front of the boat, and it moves with the boat)

I’m using this code:

``````public class Player_Movement : MonoBehaviour {

//Floats
public float maxSpeed = 3;
public float speed = 50f;
public float turnSpeed = 30;

//Int
public int accelerationSpeed = 100;//How fast the ship will accelerate.

//References
private Vector3 eulerAngleVelocity;//Which way the vehicle will rotate.
private Rigidbody2D rb2d;
public Rigidbody2D dir;

// Use this for initialization
void Start () {
rb2d = gameObject.GetComponent<Rigidbody2D>();
}

// Update is called once per frame
void Update () {
if (Input.GetKey(KeyCode.D)) {
transform.Rotate(0, 0, -1);
}
if (Input.GetKey(KeyCode.A)) {
transform.Rotate(0, 0, 1);
}

if (Input.GetKey(KeyCode.W)) {
rb2d.AddForce(Vector2.MoveTowards(rb2d.position, dir.position, 1));//This moves the car forward by adding the force of the acceleration speed to the car.
}

else if (Input.GetKey(KeyCode.S)) {
rb2d.AddForce(Vector2.MoveTowards(rb2d.position, dir.position, -1));//This moves the car forward by adding the force of the acceleration speed to the car.
}
}
}
``````

Please let me know how to make this work or if there is a simpler way of doing it

Turns out the solution was really simple, I just needed to use transform.up to make the object move forward with AddForce

``````//Floats
public float velocity = 3f;//The bigger this number is, the faster the boat will move
public float projectileVelocity = 3;
//Int

//References
private Rigidbody2D rb2d;

//Lists
private List<GameObject> Projectiles = new List<GameObject>();

// Use this for initialization
void Start () {
rb2d = gameObject.GetComponent<Rigidbody2D>();
}

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

//Moves the player forward