I’m making a top down dungeon crawler and I currently have a player set up with a rigidbody2d and box collider 2d. However, my character can walk over other colliders (walls, chests, etc) in the scene. The character moves one unit block each time a key is pressed (in this case 32 units and all sprites are 32x32 including the character). What is ignoring colliders in my script and how can I make boundaries actually happen?
Player Controller:
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public Sprite playerNorth;
public Sprite playerEast;
public Sprite playerSouth;
public Sprite playerWest;
public GameObject chest;
public Sprite chestOpen;
private SpriteRenderer rend;
private float speed = 1.0f;
private Vector3 pos;
private Transform tr;
void Start ()
{
pos = transform.position;
tr = transform;
rend = GetComponent<SpriteRenderer>();
if(rend.sprite == null)
{
rend.sprite = playerNorth;
}
}
void Update ()
{
OnMove();
}
void OnMove()
{
if (Input.GetKeyDown(KeyCode.A))
{
rend.sprite = playerWest;
pos += Vector3.left;
}
if (Input.GetKeyDown(KeyCode.D))
{
rend.sprite = playerEast;
pos += Vector3.right;
}
if (Input.GetKeyDown(KeyCode.W))
{
rend.sprite = playerNorth;
pos += Vector3.up;
}
if (Input.GetKeyDown(KeyCode.S))
{
rend.sprite = playerSouth;
pos += Vector3.down;
}
transform.position = Vector3.MoveTowards(transform.position, pos, speed);
}
void OnCollisionEnter2D (Collision2D other)
{
if (other.gameObject.tag == "Chest")
{
if (Input.GetKeyDown(KeyCode.E))
{
SpriteRenderer cOpen = chest.GetComponent<SpriteRenderer>();
cOpen.sprite = chestOpen;
}
}
}
}