示例#1
0
    //--------------------------------------------------------------------------METHODS:

    //--------------------------------------------------------------------------HELPERS:

    private void moveArm(AxisSwapper upperArm,
                         AxisSwapper forearm,
                         AxisSwapper targetForearm,
                         Transform targetHand,
                         bool isRightArm)
    {
        var     targetElbowPos  = targetHand.position - targetForearm.Forward * elbowToWristDistance;
        Vector3 shoulderToElbow = targetElbowPos - upperArm.transform.position;
        Vector3 elbowToTarget   = targetHand.position - targetElbowPos;

        // Reversed order if ! left
        Vector3 up;

        if (isRightArm)
        {
            up = Vector3.Cross(elbowToTarget, shoulderToElbow);
        }
        else
        {
            up = Vector3.Cross(shoulderToElbow, elbowToTarget);
        }

        upperArm.Look(targetElbowPos - upperArm.transform.position, up);
        forearm.Look(elbowToTarget, up);
    }
示例#2
0
    //---------------------------------------------------------------------------FIELDS:

    //---------------------------------------------------------------------MONO METHODS:

    void OnDrawGizmos()
    {
        if (!enabled)
        {
            return;
        }

        if (Swapper == null)
        {
            Swapper = GetComponent <AxisSwapper>();
        }
        // Draw X Axis
        Gizmos.color = Color.red;
        Gizmos.DrawLine(transform.position, Swapper.Right * AXIS_LINE_LENGTH);

        // Draw Y Axis
        Gizmos.color = Color.green;
        Gizmos.DrawLine(transform.position, Swapper.Up * AXIS_LINE_LENGTH);

        // Draw Z Axis
        Gizmos.color = Color.blue;
        Gizmos.DrawLine(transform.position, Swapper.Forward * AXIS_LINE_LENGTH);
    }