You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.4 KiB
C#

6 months ago
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Autohand.Demo{
public class WristLookEvent : MonoBehaviour{
public Hand hand;
public Camera head;
[Tooltip("The minimum head->wrist distance required to activate")]
public float maxDistance = 0.75f;
[Tooltip("The angle precisness required to activate; 0 is any angle, 1 is exactly pointed at the face")]
[Range(0, 1)]
public float anglePreciseness = 0.75f;
public bool disableWhileHolding = true;
[Header("Events")]
public UnityHandEvent OnShow;
public UnityHandEvent OnHide;
bool showing = false;
void Update(){
if (hand == null || head == null)
return;
var handPos = hand.transform.position;
var headPos = head.transform.position;
float lookness = Vector3.Dot((headPos - handPos).normalized, -hand.palmTransform.forward);
float distance = Vector3.Distance(headPos, hand.palmTransform.position);
bool found = lookness >= anglePreciseness && distance < maxDistance && hand.holdingObj == null;
if (!showing && found){
OnShow?.Invoke(hand);
showing = true;
}
else if(showing && !found){
OnHide?.Invoke(hand);
showing = false;
}
}
}
}