using UnityEngine; using NeonTea.Quakeball.Players; namespace NeonTea.Quakeball.Animation { /// Animates the parts that can't be animated via the animation system, e.g. aiming. public class SoldierProceduralAnimator : MonoBehaviour { public Transform Torso; public Transform Head; public Player Player; private Vector3 TorsoBaseEulers; private Vector3 HeadBaseEulers; private Vector3 TorsoEulers; private Vector3 HeadEulers; private void Awake() { TorsoEulers = TorsoBaseEulers = Torso.localEulerAngles; HeadEulers = HeadBaseEulers = Head.localEulerAngles; } private void LateUpdate() { float Yaw = Player.Yaw; while (Yaw < -180) { Yaw += 360; } while (Yaw > 180) { Yaw -= 360; } Vector3 TargetTorsoEulers = TorsoBaseEulers + new Vector3(0, Yaw * 0.5f, 0); TorsoEulers = Vector3.Lerp(TorsoEulers, TargetTorsoEulers, 10f * Time.deltaTime); Torso.localEulerAngles = TorsoEulers; Vector3 TargetHeadEulers = HeadBaseEulers + new Vector3(-Player.Pitch, Yaw * 0.5f, 0); HeadEulers = Vector3.Lerp(HeadEulers, TargetHeadEulers, 10f * Time.deltaTime); Head.localEulerAngles = HeadEulers; } } }