Pascal Serrarens 17741d862a First commit
2022-01-12 10:50:57 +01:00

47 lines
1.8 KiB
C#

using UnityEngine;
namespace Passer.Humanoid {
[System.Serializable]
public class HeadAnimator : HeadSensor {
public bool headAnimation = true;
public bool faceAnimation = true;
#region Update
public override void Update() {
if (!headTarget.humanoid.animatorEnabled || !enabled || headTarget.humanoid.targetsRig.runtimeAnimatorController != null)
return;
if (headAnimation)
UpdateNeck();
}
private void UpdateNeck() {
if (headTarget.neck.target.confidence.rotation > 0.25F)
return;
Vector3 headPosition = headTarget.head.target.transform.position;
Quaternion headRotation = headTarget.head.target.transform.rotation;
headTarget.neck.target.transform.rotation = headTarget.head.target.transform.rotation;
headTarget.neck.target.transform.position = headPosition - headTarget.neck.target.transform.rotation * Vector3.up * headTarget.neck.bone.length;
headTarget.head.target.transform.position = headPosition;
headTarget.head.target.transform.rotation = headRotation;
}
#endregion
public static void UpdateNeckTargetFromHead(HeadTarget headTarget) {
Vector3 headPosition = headTarget.head.target.transform.position;
Quaternion headRotation = headTarget.head.target.transform.rotation;
headTarget.neck.target.transform.rotation = headTarget.head.target.transform.rotation;
headTarget.neck.target.transform.position = headPosition - headTarget.neck.target.transform.rotation * Vector3.up * headTarget.neck.bone.length;
headTarget.head.target.transform.position = headPosition;
headTarget.head.target.transform.rotation = headRotation;
}
}
}