Exemple #1
0
    /// <summary>
    /// 육각 타일에 맞춘 각도 벡터를 반환합니다. (-150, -120, -60, 0, 60, 120, 180도) transform.right에 대입
    /// </summary>
    public static Vector2 SnapAngle(Vector2 dir, out EDirec eDirec)
    {
        float angle = Vector2.SignedAngle(Vector2.right, dir);

        angle = angle >= 150 ? 180 : angle >= 90 ? 120 : angle >= 30 ? 60 : angle >= -30 ? 0 : angle >= -90 ? -60 : angle >= -150 ? -120 : 180;

        eDirec =
            angle == 0 ? EDirec.LEFT : angle == 60 ? EDirec.LEFTDOWN : angle == 120 ? EDirec.RIGHTDOWN : angle == 180 ? EDirec.RIGHT :
            angle == -120 ? EDirec.RIGHTUP : EDirec.LEFTUP;

        Vector2 res = (Quaternion.Euler(0, 0, angle) * Vector2.right);

        return(res);
    }
Exemple #2
0
    /// <summary>
    /// Hex를 주어진 방향으로 한 칸 이동시킵니다.
    /// </summary>
    public void Move(EDirec eDirec)
    {
        switch (eDirec)
        {
        case Hex.EDirec.RIGHT:
            x++;
            break;

        case Hex.EDirec.RIGHTUP:
            y++;
            if (y % 2 == 0)
            {
                x++;
            }
            break;

        case Hex.EDirec.LEFTUP:
            y++;
            if (y % 2 != 0)
            {
                x--;
            }
            break;

        case Hex.EDirec.LEFT:
            x--;
            break;

        case Hex.EDirec.LEFTDOWN:
            y--;
            if (y % 2 != 0)
            {
                x--;
            }
            break;

        case Hex.EDirec.RIGHTDOWN:
            y--;
            if (y % 2 == 0)
            {
                x++;
            }
            break;
        }
    }