コード例 #1
0
    public void GestureControl(self_defined_gesture_type gesture)
    {
        switch (gesture)
        {
        case self_defined_gesture_type.rotate_two_hand_x_clockwise:
            rotateDown();
            break;

        case self_defined_gesture_type.rotate_two_hand_x_counterclockwise:
            rotateUp();
            break;

        case self_defined_gesture_type.rotate_two_hand_y_clockwise:
            rotateLeft();
            break;

        case self_defined_gesture_type.rotate_two_hand_y_counterclockwise:
            rotateRight();
            break;

        default:
            break;
        }
    }
コード例 #2
0
    public void GestureControl(self_defined_gesture_type gesture, Vector3 velocity)
    {
        switch (gesture)
        {
        case self_defined_gesture_type.rotate_one_hand_x_clockwise:
            xRots++;
            if (Mathf.Approximately(xGizmo.transform.localEulerAngles.y, 180f))
            {
                StartCoroutine(Rotate(90f, 0f, 0f));
            }
            else
            {
                StartCoroutine(Rotate(-90f, 0f, 0f));
            }
            break;

        case self_defined_gesture_type.rotate_one_hand_x_counterclockwise:
            xRots++;
            if (Mathf.Approximately(xGizmo.transform.localEulerAngles.y, 180f))
            {
                StartCoroutine(Rotate(-90f, 0f, 0f));
            }
            else
            {
                StartCoroutine(Rotate(90f, 0f, 0f));
            }
            break;

        case self_defined_gesture_type.rotate_one_hand_y_clockwise:
            yRots++;
            StartCoroutine(Rotate(0f, 90f, 0f));
            break;

        case self_defined_gesture_type.rotate_one_hand_y_counterclockwise:
            yRots++;
            StartCoroutine(Rotate(0f, -90f, 0f));
            break;

        case self_defined_gesture_type.rotate_one_hand_z_clockwise:
            zRots++;
            if (Mathf.Approximately(zGizmo.transform.localEulerAngles.y, 270f))
            {
                StartCoroutine(Rotate(0f, 0f, -90f));
            }
            else
            {
                StartCoroutine(Rotate(0f, 0f, 90f));
            }
            break;

        case self_defined_gesture_type.rotate_one_hand_z_counterclockwise:
            zRots++;
            if (Mathf.Approximately(zGizmo.transform.localEulerAngles.y, 270f))
            {
                StartCoroutine(Rotate(0f, 0f, 90f));
            }
            else
            {
                StartCoroutine(Rotate(0f, 0f, -90f));
            }
            break;

        case self_defined_gesture_type.move_one_hand:
            velocityList[timeGap] = velocity;
            if (timeGap == LeapStatic.dragStable - 1)
            {
                velocity = new Vector3(0, 0, 0);
                foreach (Vector3 v in velocityList)   //count the average of these velocities
                {
                    velocity += v;
                }
                try
                {
                    toRotate.transform.position += LeapStatic.dragVelocity * (velocity / LeapStatic.dragStable);
                }catch (Exception ex)
                {
                }
                timeGap = 0;
            }
            else
            {
                timeGap++;
            }

            break;

        default:
            break;
        }
    }