Hi Guys. Sorry if my coding aren't good. I am having a abit of a problem with one of my codes. So I am trying to get a enemy to move from Point A to Point B. this is 2d based Point A and Point B are empty gameobjects with rigidbody2d. But currently the code is only set to have them walk to either point A/B. Currently I have a few problems. This first code doesn't work the enemy will only stand at their currently location. position = Vector2.MoveTowards(position, positionwp1, Time.deltaTime * speed); rrigidbody2D.MovePosition(position); this is another code the enemy moves but it only move at 1 direction up. If I set it to positionwp2. it still goes up even after I change the position of Point A it still moves up. I am guess its due to the ".y"? //position.y = positionwp1.y + Time.deltaTime * speed; also the "If(position != Positionwp1)" doesn't seems to work the enemy will just stay at the same location. can anyone help? Code (CSharp): using System.Collections; using System.Collections.Generic; using UnityEngine; public class RobotTest : MonoBehaviour { Rigidbody2D rrigidbody2D; public float speed = 1.0f; Animator animator; public Rigidbody2D wp1; public Rigidbody2D wp2; // Start is called before the first frame update void Start() { rrigidbody2D = GetComponent<Rigidbody2D>(); animator = GetComponent<Animator>(); wp1 = GetComponent<Rigidbody2D>(); wp2 = GetComponent<Rigidbody2D>(); } // Update is called once per frame void Update() { Vector2 position = rrigidbody2D.position; Vector2 positionwp1 = wp1.position; Vector2 positionwp2 = wp2.position; if(position != positionwp1) { animator.SetFloat("Move X", 0); animator.SetFloat("Move Y", 1); // position.y = positionwp2.y + Time.deltaTime * speed; position = Vector2.MoveTowards(position, positionwp1, Time.deltaTime * speed); } rrigidbody2D.MovePosition(position); } }