- Home /
Help with 2D point and click move script that will stop moving when it hits a wall
Hi! I am new to Unity and have been working on this problem for the past four days. I'm not getting anywhere. Please help! I have gotten my player to move via mouse clicks and stop moving when it hits an obstacle. But when I click again above it while it is touching a collider the player will float into the direction I clicked forever/until it hits another collider. I don't want this to happen. I want it to go to the place I have clicked on even when it is touching a collider. Is it possible to do this? (My game is 2D) My script:
public class PointAndClick : MonoBehaviour {
public float speed = 20f;
public Rigidbody2D rb;
public Vector2 destination;
public Vector2 place;
public Vector2 journey;
// copy and pasted
public Vector2 gap;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody2D>();
place = rb.transform.position;
}
// Update is called once per frame
void FixedUpdate () {
if(Input.GetMouseButtonDown(0)) {
destination = Camera.main.ScreenToWorldPoint(Input.mousePosition);
journey.x = destination.x - place.x;
journey.y = destination.y - place.y;
rb.velocity = new Vector2 (journey.normalized.x * speed * Time.deltaTime, journey.normalized.y * speed * Time.deltaTime);
}
}
void LateUpdate () {
place = rb.transform.position;
// copy and pasted from here down
gap.x = Mathf.Abs (destination.x) - Mathf.Abs (place.x);
gap.y = Mathf.Abs (destination.y) - Mathf.Abs (place.y);
if (.05 > Mathf.Abs (gap.x))
if (.05 > Mathf.Abs (gap.y))
rb.velocity = new Vector2 (0,0);
}
void OnCollisionEnter2D () {
rb.velocity = new Vector2(0, 0);
Debug.Log("point and click collision");
}
}
Help me Obi-Wan Kenobi. You're my only hope! P.S. I got most of this script from https://www.youtube.com/watch?v=0pHzTIIiYaY&t=1366s P.P.S. I'm open to changing my moving mechanics I just want it to be a point and click that will stop when it hits an obstacle and works for 2D.
Your answer
Follow this Question
Related Questions
How can I detect a collision point, but allow player to pass through collider. 1 Answer
Unity2D side collision detection 1 Answer
How do I get the player and the object they touch both disappear/destroyed? 1 Answer
My object is going through boundaries Problem! 1 Answer
Unity getting an object to pass through another object but still trigger collision 1 Answer