1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using UnityEngine;
- namespace Valve.VR.InteractionSystem.Sample
- {
- public class JoeJeffGestures : MonoBehaviour
- {
- private const float openFingerAmount = 0.1f;
- private const float closedFingerAmount = 0.9f;
- private const float closedThumbAmount = 0.4f;
- private JoeJeff joeJeff;
- private void Awake()
- {
- joeJeff = this.GetComponent<JoeJeff>();
- }
- private void Update()
- {
- if (Player.instance == null)
- return;
- Transform cam = Camera.main.transform;
- bool lookingAt = (Vector3.Angle(cam.forward, transform.position - cam.position) < 90);
- if (lookingAt == false)
- return;
- for (int handIndex = 0; handIndex < Player.instance.hands.Length; handIndex++)
- {
- if (Player.instance.hands[handIndex] != null)
- {
- SteamVR_Behaviour_Skeleton skeleton = Player.instance.hands[handIndex].skeleton;
- if (skeleton != null)
- {
- //Debug.LogFormat("{0:0.00}, {1:0.00}, {2:0.00}, {3:0.00}, {4:0.00}", skeleton.thumbCurl, skeleton.indexCurl, skeleton.middleCurl, skeleton.ringCurl, skeleton.pinkyCurl);
- if ((skeleton.indexCurl <= openFingerAmount && skeleton.middleCurl <= openFingerAmount) &&
- (skeleton.thumbCurl >= closedThumbAmount && skeleton.ringCurl >= closedFingerAmount && skeleton.pinkyCurl >= closedFingerAmount))
- {
- PeaceSignRecognized(true);
- }
- else
- {
- PeaceSignRecognized(false);
- }
- }
- }
- }
- }
- private bool lastPeaceSignState = false;
- private void PeaceSignRecognized(bool currentPeaceSignState)
- {
- if (lastPeaceSignState == false && currentPeaceSignState == true)
- {
- joeJeff.Jump();
- }
- lastPeaceSignState = currentPeaceSignState;
- }
- }
- }
|