using UnityEngine; namespace HotUpdate.Gameplay { /// Plays Idle or Walk on the camp guide from how far the root moved. public sealed class ExplorerLocomotion : MonoBehaviour { Animator _animator; Vector3 _last; void Awake() { _animator = GetComponentInChildren(); if (_animator != null) _animator.applyRootMotion = false; _last = transform.position; } void LateUpdate() { if (_animator == null) return; Vector3 delta = transform.position - _last; _last = transform.position; float speed = new Vector2(delta.x, delta.z).magnitude / Mathf.Max(Time.deltaTime, 0.0001f); _animator.SetInteger("Motion", speed > 0.04f ? 1 : 0); } } }