void Update() { PlayerController player = Player.GetComponent <PlayerController>(); KinectController kinect = Kinect.GetComponent <KinectController>(); FlyDetector fly = Fly.GetComponent <FlyDetector>(); if (kinect.PlayerSkeleton == null) { return; } if (fly.IsActivated) { float elapsedTime = Time.deltaTime; if (takeOffTimer < takeOffTime) { transform.position += Vector3.up * speed * elapsedTime; takeOffTimer += elapsedTime; } else { WindowsKinect.Body playerSkeleton = kinect.PlayerSkeleton; fly.Set( playerSkeleton.GetPosition(WindowsKinect.JointType.ShoulderLeft), playerSkeleton.GetPosition(WindowsKinect.JointType.ShoulderRight), playerSkeleton.GetPosition(WindowsKinect.JointType.ElbowLeft), playerSkeleton.GetPosition(WindowsKinect.JointType.ElbowRight)); //Debug.Log(string.Format("{0} | {1}", transform.rotation.z, fly.Angle)); if (Mathf.Abs(transform.rotation.z - fly.Angle) > 0.02f) { FlyDirection rotation = fly.FlyDirection; float degree = 0f; if (rotation == FlyDirection.Right) { degree = fly.Angle > transform.rotation.z ? 1f : -1f; } else if (rotation == FlyDirection.Left) { degree = fly.Angle < transform.rotation.z ? -1f : 1f; } transform.Rotate(new Vector3(0f, 0f, 1f), 2f * degree * Mathf.PI / 2f * elapsedTime); } //transform.position += new Vector3(0f, 0f, -1f) * speed * elapsedTime; } } else if (!player.renderer.enabled) { fly.Activate(); } }
private void UpdateJump(KinectController kinect) { if (jumpController.IsActivated) { if (jumpController.IsPassing) { jumpController.Deactivate(); isMoving = true; UpdateInstruction(noInstructionText); } else { WindowsKinect.Body body = kinect.PlayerSkeleton; jumpController.Set( body.GetPosition(WindowsKinect.JointType.FootLeft), body.GetPosition(WindowsKinect.JointType.FootRight)); } } }
private bool IsInRange(WindowsKinect.Body skeleton) { const float ftToMeter = 0.3048f; const float minDistance = 4.5f * ftToMeter; const float maxDistance = 6.5f * ftToMeter; Vector3 spineBasePosition = skeleton.GetPosition(WindowsKinect.JointType.SpineBase); return(spineBasePosition.z >= minDistance && spineBasePosition.z <= maxDistance && Mathf.Abs(spineBasePosition.x) < 1.5f); }
private void UpdateHandWave(KinectController kinect) { if (handWaveController.IsActivated) { if (handWaveController.IsPassing) { handWaveController.Deactivate(); isMoving = true; UpdateInstruction(noInstructionText); } else { WindowsKinect.Body body = kinect.PlayerSkeleton; handWaveController.Set( body.GetPosition(WindowsKinect.JointType.HandLeft), body.GetPosition(WindowsKinect.JointType.HandRight), body.GetPosition(WindowsKinect.JointType.ElbowLeft), body.GetPosition(WindowsKinect.JointType.ElbowRight)); } } }