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);
    }
Example #5
0
    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;
            }
        }
    }