示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (!isInitialized)
        {
            return;
        }
        //kin.AddToGrammar("destroy");
        //Debug.Log(kin.GetLastRecoResult());
        // Check for lightning
        Vector3 rightHand     = kin.GetJointPos(KinectWrapper.Joints.HAND_RIGHT);
        Vector3 rightShoulder = kin.GetJointPos(KinectWrapper.Joints.SHOULDER_RIGHT);
        Vector3 rightVec      = rightHand - rightShoulder;

        rightVec.z = -1 * rightVec.z;
        if (rightVec.z / rightVec.magnitude > STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_POS_Z;
        }
        else if (rightVec.z / rightVec.magnitude < -STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_NEG_Z;
        }
        else if (rightVec.x / rightVec.magnitude < -STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_NEG_X;
        }
        else if (rightVec.x / rightVec.magnitude > STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_POS_X;
        }
        else if (rightVec.y / rightVec.magnitude < -STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_NEG_Y;
        }
        else if (rightVec.y / rightVec.magnitude > STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_POS_Y;
        }
        else
        {
            rightArm = ARM_STATE.AS_NONE;
        }



        Vector3 leftHand     = kin.GetJointPos(KinectWrapper.Joints.HAND_LEFT);
        Vector3 leftShoulder = kin.GetJointPos(KinectWrapper.Joints.SHOULDER_LEFT);
        Vector3 leftVec      = leftHand - leftShoulder;

        leftVec.z = -1 * leftVec.z;
        if (leftVec.z / leftVec.magnitude > STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_POS_Z;
        }
        else if (leftVec.z / leftVec.magnitude < -STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_NEG_Z;
        }
        else if (leftVec.x / leftVec.magnitude < -STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_NEG_X;
        }
        else if (leftVec.x / leftVec.magnitude > STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_POS_X;
        }
        else if (leftVec.y / leftVec.magnitude < -STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_NEG_Y;
        }
        else if (leftVec.y / leftVec.magnitude > STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_POS_Y;
        }
        else
        {
            leftArm = ARM_STATE.AS_NONE;
        }


        Vector3 rightfoot       = kin.GetJointPos(KinectWrapper.Joints.FOOT_RIGHT);
        Vector3 leftfoot        = kin.GetJointPos(KinectWrapper.Joints.FOOT_LEFT);
        float   DisBetweenFoots = rightfoot.z - leftfoot.z;
        float   DisToJump       = Mathf.Abs(leftfoot.y) - Mathf.Abs(rightfoot.y);

        if (DisBetweenFoots > LEG_THRESHOLD)
        {
            rightLeg = LEG_STATE.AS_BACKWORD;
        }
        else if (DisBetweenFoots < -LEG_THRESHOLD)
        {
            rightLeg = LEG_STATE.AS_FORWORD;;
        }
        else
        {
            rightLeg = LEG_STATE.AS_NONE;
        }

        if (DisToJump > 90)
        {
            rightLegJump = JUMP_STATE.AS_JUMP;
        }
        else
        {
            rightLegJump = JUMP_STATE.AS_NONE;
        }

        Vector3 headVec = kin.GetJointPos(KinectWrapper.Joints.HEAD);
        Vector3 kneeVec = kin.GetJointPos(KinectWrapper.Joints.KNEE_LEFT);
        float   DisBetweenHeadAndKnee = headVec.y - kneeVec.y;

        if (DisBetweenHeadAndKnee < DUCK_THRESHOLD)
        {
            headKneeLeft = DUCK_STATE.AS_DUCK;
        }
        else
        {
            headKneeLeft = DUCK_STATE.AS_NONE;
        }

        //Debug.Log(headKneeLeft + ": " + DisBetweenHeadAndKnee);
    }
示例#2
0
 public void lower()
 {
     legState = LEG_STATE.LOWERING;
     thigh.motor = lowerMotor;
     thigh.useMotor = true;
 }
示例#3
0
 public void jump()
 {
     legState = LEG_STATE.JUMPING;
     thigh.motor = jumpMotor;
     thigh.useMotor = true;
 }
示例#4
0
 public void lift()
 {
     legState = LEG_STATE.LIFTING;
     thigh.motor = liftMotor;
     thigh.useMotor = true;
 }
    // Update is called once per frame
    void Update()
    {
        if (!isInitialized) return;
		//kin.AddToGrammar("destroy");
		//Debug.Log(kin.GetLastRecoResult());
        // Check for lightning
        Vector3 rightHand = kin.GetJointPos(KinectWrapper.Joints.HAND_RIGHT);
        Vector3 rightShoulder = kin.GetJointPos(KinectWrapper.Joints.SHOULDER_RIGHT);
        Vector3 rightVec = rightHand - rightShoulder;
        rightVec.z = -1 * rightVec.z;
        if (rightVec.z / rightVec.magnitude > STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_POS_Z;
        }
        else if (rightVec.z / rightVec.magnitude < -STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_NEG_Z;
        }
        else if (rightVec.x / rightVec.magnitude < -STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_NEG_X;
        }
        else if (rightVec.x / rightVec.magnitude > STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_POS_X;
        }
        else if (rightVec.y / rightVec.magnitude < -STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_NEG_Y;
        }
        else if (rightVec.y / rightVec.magnitude > STATE_THRESHOLD)
        {
            rightArm = ARM_STATE.AS_POS_Y;
        }
        else
        {
            rightArm = ARM_STATE.AS_NONE;
        }



        Vector3 leftHand = kin.GetJointPos(KinectWrapper.Joints.HAND_LEFT);
        Vector3 leftShoulder = kin.GetJointPos(KinectWrapper.Joints.SHOULDER_LEFT);
        Vector3 leftVec = leftHand - leftShoulder;
        leftVec.z = -1 * leftVec.z;
        if (leftVec.z / leftVec.magnitude > STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_POS_Z;
        }
        else if (leftVec.z / leftVec.magnitude < -STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_NEG_Z;
        }
        else if (leftVec.x / leftVec.magnitude < -STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_NEG_X;
        }
        else if (leftVec.x / leftVec.magnitude > STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_POS_X;
        }
        else if (leftVec.y / leftVec.magnitude < -STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_NEG_Y;
        }
        else if (leftVec.y / leftVec.magnitude > STATE_THRESHOLD)
        {
            leftArm = ARM_STATE.AS_POS_Y;
        }
        else
        {
            leftArm = ARM_STATE.AS_NONE;
        }
		
		
		Vector3 rightfoot = kin.GetJointPos(KinectWrapper.Joints.FOOT_RIGHT);
		Vector3 leftfoot = kin.GetJointPos(KinectWrapper.Joints.FOOT_LEFT);
		float DisBetweenFoots = rightfoot.z - leftfoot.z;
		float DisToJump = Mathf.Abs(leftfoot.y) - Mathf.Abs(rightfoot.y);
		if (DisBetweenFoots > LEG_THRESHOLD)
        {
            rightLeg = LEG_STATE.AS_BACKWORD;
        }
        else if (DisBetweenFoots < -LEG_THRESHOLD)
        {
            rightLeg = LEG_STATE.AS_FORWORD;;
        }
        else
        {
            rightLeg = LEG_STATE.AS_NONE;
        }
		
		if ( DisToJump > 90 )
		{
			rightLegJump = JUMP_STATE.AS_JUMP;
		} else {
			rightLegJump = JUMP_STATE.AS_NONE;
		}
		
		Vector3 headVec = kin.GetJointPos(KinectWrapper.Joints.HEAD);
		Vector3 kneeVec = kin.GetJointPos(KinectWrapper.Joints.KNEE_LEFT);
		float DisBetweenHeadAndKnee = headVec.y - kneeVec.y;
		
        if (DisBetweenHeadAndKnee < DUCK_THRESHOLD){
			headKneeLeft = DUCK_STATE.AS_DUCK;
		} else {
			headKneeLeft = DUCK_STATE.AS_NONE;
		}
		
		//Debug.Log(headKneeLeft + ": " + DisBetweenHeadAndKnee);
    }