public void ChangeRotation(int times) { Vector3 mousePos = Input.mousePosition; mousePos.z = -Camera.main.transform.localPosition.z; Vector3 worldPoint = Camera.main.ScreenToWorldPoint(mousePos); Vector3Int overlayPos = MouseToTilePos(overlay); int x = (int)rotation; x += times; if (x >= Enum.GetValues(typeof(Rotation)).GetLength(0)) { x -= Enum.GetValues(typeof(Rotation)).GetLength(0); } if (x < 0) { x += Enum.GetValues(typeof(Rotation)).GetLength(0); } rotation = (Rotation)x; if (grid.GetTile(overlayPos) is DirectionalTile) { DirectionalTile tile = (DirectionalTile)grid.GetTile(overlayPos); tile.SetRotation(rotation); } Debug.Log(rotation); }
public virtual void SetTile(Vector3Int location, GridTile tile, Rotation rotation) { SetTile(location, tile); DirectionalTile directionalTile = (DirectionalTile)tile; directionalTile.SetRotation(rotation); }
void OnTriggerEnter(Collider collider) { if (collider.transform.tag == "DirectionalTile") { DirectionalTile tile = collider.gameObject.GetComponent <DirectionalTile>(); switch (tile.CurrentDirection) { case "UP": transform.rotation = Quaternion.Euler(0, 0, 0); break; case "RIGHT": transform.rotation = Quaternion.Euler(0, 90, 0); break; case "DOWN": transform.rotation = Quaternion.Euler(0, 180, 0); break; case "LEFT": transform.rotation = Quaternion.Euler(0, 270, 0); break; default: break; } } }
public override void SetTile(Vector3Int location, GridTile tile) { DirectionalTile directionalTile = (DirectionalTile)tile; tiles[location] = directionalTile; directionalTile.transform.SetParent(this.transform); // if (directionalTile.name.IndexOf("(Clone)") > -1) { // directionalTile.name = directionalTile.name.Substring(0, directionalTile.name.IndexOf("(Clone)")) + location; // } directionalTile.SetRotation(Rotation.NORTH); UpdateNeighbors(location); }
void OnTriggerEnter(Collider collider) { if (collider.transform.tag == "DirectionalTile" && coolDown <= 0.0f) { // start cooldown (counts down in Update) so that tile cannot be pressed twice immediately coolDown = 0.5f; Quaternion currentTileDirection = Quaternion.Euler(0, 0, 0); DirectionalTile tile = collider.gameObject.GetComponentInChildren <DirectionalTile>(); switch (tile.CurrentDirection) { case "UP": currentTileDirection = Quaternion.Euler(0, 0, 0); break; case "RIGHT": currentTileDirection = Quaternion.Euler(0, 90, 0); break; case "DOWN": currentTileDirection = Quaternion.Euler(0, 180, 0); break; case "LEFT": currentTileDirection = Quaternion.Euler(0, 270, 0); break; default: break; } if (ratBody.rotation.eulerAngles != currentTileDirection.eulerAngles && ratBody.rotation.eulerAngles != Quaternion.Inverse(currentTileDirection).eulerAngles && (ratBody.rotation.eulerAngles.y + 180).ToString() != currentTileDirection.eulerAngles.y.ToString() && (ratBody.rotation.eulerAngles.y - 180).ToString() != currentTileDirection.eulerAngles.y.ToString()) { //isRatMoving = false; StartCoroutine(RatTurnAnimate(collider, currentTileDirection)); } else { transform.rotation = currentTileDirection; } } }