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
Answer by danterf4 · Jun 08, 2018 at 05:31 AM
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
         rb2d.AddForce(transform.up * -velocity);
 
         //Rotates the player
         if (Input.GetKey(KeyCode.D)) {
             transform.Rotate(0, 0, -1);
         }
         else if (Input.GetKey(KeyCode.A)) {
             transform.Rotate(0, 0, 1);
         }
     }
Your answer
 
 
             Follow this Question
Related Questions
How to allow clicks to go through Circle Collider 2D on sprite prefab? 0 Answers
Adding small acceleration to 2d top down movement game? 0 Answers
Unity 2D Lighting From Universal Render Pipeline Not Working 1 Answer
How do I create a 2D movement script that will cause prefabs to drift around the screen? 0 Answers
Unexpected symbol '=' parser error and Unexpected symbol '(' error 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                