Mercurial > hg > Game > Games
diff Orchestland/Assets/LeapMotion+OVR/DemoResources/Scripts/MovementManager.cs @ 1:f7675884f2a1
Add Orchestland project
author | Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2015 23:09:20 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Orchestland/Assets/LeapMotion+OVR/DemoResources/Scripts/MovementManager.cs Fri Jul 17 23:09:20 2015 +0900 @@ -0,0 +1,35 @@ +using UnityEngine; +using System.Collections; + +public class MovementManager : MonoBehaviour { + public GameObject leapMotionOVRController = null; + public HandController handController = null; + + // Use this for initialization + void Start () { + } + + // Update is called once per frame + void LateUpdate () { + if (leapMotionOVRController == null || handController == null) + return; + + // Move forward if both palms are facing outwards! Whoot! + HandModel[] hands = handController.GetAllGraphicsHands(); + if (hands.Length > 1) + { + Vector3 direction0 = (hands[0].GetPalmPosition() - handController.transform.position).normalized; + Vector3 normal0 = hands[0].GetPalmNormal().normalized; + + Vector3 direction1 = (hands[1].GetPalmPosition() - handController.transform.position).normalized; + Vector3 normal1 = hands[1].GetPalmNormal().normalized; + + if (Vector3.Dot(direction0, normal0) > direction0.sqrMagnitude * 0.5f && Vector3.Dot(direction1, normal1) > direction1.sqrMagnitude * 0.5f) + { + Vector3 target = (hands[0].GetPalmPosition() + hands[1].GetPalmPosition()) / 2.0f; + target.y = 0f; + leapMotionOVRController.transform.position = Vector3.Lerp(leapMotionOVRController.transform.position, target, 0.1f); + } + } + } +}