Пример #1
0
    private void getToNearestAngle(Vector3 offset)
    {
        float tangent = offset.z / offset.x;

        if (tangent >= 1 || tangent <= -1)
        {
            if (offset.z > 0.0f)
            {
                freeMoveMode = FreeMoveMode.front;
            }
            else
            {
                freeMoveMode = FreeMoveMode.behind;
            }
        }
        else
        {
            if (offset.x > 0.0f)
            {
                freeMoveMode = FreeMoveMode.right;
            }
            else
            {
                freeMoveMode = FreeMoveMode.left;
            }
        }
    }
Пример #2
0
    private void switchAngle()
    {
        if (Input.GetKeyUp(KeyCode.Q) && freeMoveOnDesignedAngle)
        {
            switchedMode = false;
            Debug.Log(freeMoveMode);
            switch (freeMoveMode)
            {
            case FreeMoveMode.behind:
                freeMoveMode = FreeMoveMode.left;
                break;

            case FreeMoveMode.left:
                freeMoveMode = FreeMoveMode.front;
                break;

            case FreeMoveMode.front:
                freeMoveMode = FreeMoveMode.right;
                break;

            case FreeMoveMode.right:
                freeMoveMode = FreeMoveMode.behind;
                break;
            }
            Debug.Log("after: " + freeMoveMode);
        }
        if (Input.GetKeyUp(KeyCode.E) && freeMoveOnDesignedAngle)
        {
            switchedMode = false;
            switch (freeMoveMode)
            {
            case FreeMoveMode.behind:
                freeMoveMode = FreeMoveMode.right;
                break;

            case FreeMoveMode.left:
                freeMoveMode = FreeMoveMode.behind;
                break;

            case FreeMoveMode.front:
                freeMoveMode = FreeMoveMode.left;
                break;

            case FreeMoveMode.right:
                freeMoveMode = FreeMoveMode.front;
                break;
            }
        }
        switch (freeMoveMode)
        {
        case FreeMoveMode.behind:
            curFreeMovePositionOffsetBase = behindPositionOffsetBase;
            forward  = new Vector3(0, 0.0f, 1);
            right    = new Vector3(1, 0.0f, 0);
            left     = new Vector3(-1, 0.0f, 0);
            backward = new Vector3(0, 0.0f, -1);
            break;

        case FreeMoveMode.left:
            curFreeMovePositionOffsetBase = leftPositionOffsetBase;
            forward  = new Vector3(1, 0.0f, 0);
            right    = new Vector3(0, 0.0f, -1);
            left     = new Vector3(0, 0.0f, 1);
            backward = new Vector3(-1, 0.0f, 0);
            break;

        case FreeMoveMode.front:
            curFreeMovePositionOffsetBase = frontPositionOffsetBase;
            forward  = new Vector3(0, 0.0f, -1);
            right    = new Vector3(-1, 0.0f, 0);
            left     = new Vector3(1, 0.0f, 0);
            backward = new Vector3(0, 0.0f, 1);
            break;

        case FreeMoveMode.right:
            curFreeMovePositionOffsetBase = rightPositionOffsetBase;
            forward  = new Vector3(-1, 0.0f, 0);
            right    = new Vector3(0, 0.0f, 1);
            left     = new Vector3(0, 0.0f, -1);
            backward = new Vector3(1, 0.0f, 0);
            break;
        }
    }