bool Move(int x, int z) { if (Time.timeScale < 1f) { return(false); } if (!falling) { int newXPos = (int)transform.position.x + x; int newZPos = (int)transform.position.z + z; SingleTile tile = TileManager.main.GetTile(newXPos, newZPos); if (tile != null) { if (tile.TileType == TileType.Wall) { //Debug.Log("<b>move:</b> [" + newXPos + ", " + newZPos + "] <color=red>WALL</color>"); return(false); } GenericObject tileObject = tile.TileObject; if (tileObject != null) { if (tileObject.Movable) { if (!tileObject.Move(x, z)) { return(false); } if (tileObject.ObjectType == ObjectType.MovableBlock) { SoundManager.main.PlaySound(SoundClip.MoveBlock); } else { SoundManager.main.PlaySound(SoundClip.MoveTreasure); } } else if ( tileObject.ObjectType == ObjectType.MovableTreasureRed || tileObject.ObjectType == ObjectType.MovableTreasureBlue || tileObject.ObjectType == ObjectType.MovableTreasureGreen ) { GameManager.main.GainItem(tileObject.GetComponent <MovableTreasure>().GetItem()); SoundManager.main.PlaySound(SoundClip.GainItem); tileObject.RemoveFromTile(); Destroy(tileObject.gameObject); } else if ( tileObject.ObjectType == ObjectType.LockedDoorRed || tileObject.ObjectType == ObjectType.LockedDoorGreen || tileObject.ObjectType == ObjectType.LockedDoorBlue) { if (!tileObject.GetComponent <LockedDoor>().UnlockDoor(GameManager.main.Items)) { return(false); } SoundManager.main.PlaySound(SoundClip.UnlockDoor); tileObject.RemoveFromTile(); } else if (tileObject.ObjectType == ObjectType.ProjectileShooter) { return(false); } else if (tileObject.ObjectType == ObjectType.LevelEnd) { SoundManager.main.PlaySound(SoundClip.LevelEnd); GameManager.main.FinishLevel(); } } } if (tile.TileType == TileType.Hole) { falling = true; } //Debug.Log("<b>move:</b> [" + newXPos + ", " + newZPos + "] <color=green>EMPTY</color>"); transform.position = new Vector3(transform.position.x + x, transform.position.y, transform.position.z + z); xPos = (int)transform.position.x; zPos = (int)transform.position.z; return(true); } return(false); }