2D Top-Down shooter - collision not working
So, I am doing this little project in Unity 2D and I have an issue with my Player movement script. I want the character to face the mouse position, and move left, right, up and down. The code works perfectly, but the character is not detecting collision with walls (well, anything in general). I tried putting the RigidBody2D component onto the walls, but that just doesn't work. I think there is a problem in the code, but I can't tell what it is. I someone could tell me, or even post fixed version of the code, that would be well appreciated.
Here is the code for reference.
Vector3 _position;
Transform _transform;
public float speed = 5f;
Rigidbody2D rb2d;
BoxCollider2D boxCollider2d;
void Awake ()
{
_position = transform.position;
_transform = transform;
rb2d = GetComponent<Rigidbody2D>();
boxCollider2d = GetComponent<BoxCollider2D>();
}
void FixedUpdate ()
{
var mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Quaternion rot = Quaternion.LookRotation(transform.position - mousePosition, Vector3.forward);
transform.rotation = rot;
transform.eulerAngles = new Vector3(0, 0, transform.eulerAngles.z);
if (Input.GetKey(KeyCode.W) && _transform.position == _position)
{
_position += Vector3.down;
}
if (Input.GetKey(KeyCode.S) && _transform.position == _position)
{
_position += Vector3.down;
}
if (Input.GetKey(KeyCode.A) && _transform.position == _position)
{
_position += Vector3.left;
}
if (Input.GetKey(KeyCode.D) && _transform.position == _position)
{
_position += Vector3.right;
}
transform.position = Vector2.MoveTowards(transform.position, _position, Time.deltaTime * speed);
}
}
do not set the position of your player. that teleports it and does not move it in a collision detectable way. either use AddForce on the Rigidbody, or set its velocity to the amount of change.
Your answer
Follow this Question
Related Questions
How to make a player fire a bow in a 2d roguelike game? 0 Answers
When obstacles collide with tag move to y axis which is randomly chosen out of 3 values 0 Answers
(C#) OnTriggerEnter2D wont trigger. 1 Answer
2d game kit ellen (player) getting glitched on collider 0 Answers
2D Axis Movement 0 Answers