public void Move(ref Vector2 velocity) { RaycastHit2D[] hits = new RaycastHit2D[10]; ContactFilter2D filter = new ContactFilter2D() { layerMask = collisionMask }; int numHits = collisionBox.Cast(velocity, filter, hits, velocity.magnitude); if (numHits > 0) { // Reset Velocity Vector velocity = Vector2.zero; // Check the cell we have collided with TileMetaData tileMeta = GetTileAttributesAtPoint(hits[0].point, 1); if (tileMeta.Action != "") { string action = tileMeta.Action; if (action.StartsWith("Teleport")) { string[] aParts = action.Split(';'); string mapName = aParts[1]; float playerX = (float)Convert.ToDouble(aParts[2]); float playerY = (float)Convert.ToDouble(aParts[3]); mapController.ChangeMap(mapName, playerX, playerY); } } } transform.Translate(velocity); SpriteRenderer renderer = GetComponent <SpriteRenderer>(); renderer.sortingOrder = (int)((mapController.CurrentMap.MapHeight - transform.position.y) * 100) + 100; }