using UnityEngine; public class RunBase : SMB_Base { private Vector3 _v; protected override void OnEnter(GActor owner, Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnEnter(owner, animator, stateInfo, layerIndex); } protected override void OnUpdate(GActor owner, Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnUpdate(owner, animator, stateInfo, layerIndex); if (owner.State != E_ActorState.AutoRun) { if (owner.destForward != Vector3.zero) { Quaternion _q = Quaternion.LookRotation(owner.destForward, Vector3.up); owner.Rotation = Quaternion.RotateTowards(owner.Rotation, _q, GeneralConfig.Instance.RotateSpeed); } Vector3 _position = owner.Pos; float _deltaDis = owner.ActorInfo.moveSpeed * Time.deltaTime; if (_deltaDis > .5f) { _deltaDis = .5f; } Vector3 _nextPosition = _position + owner.destForward * _deltaDis; _nextPosition.y = 0; if (GActor.TryGetValidPos(_nextPosition, ref _position)) { owner.Pos = new Vector3(_position.x, owner.Pos.y, _position.z); } } } protected override void OnExit(GActor owner, Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnExit(owner, animator, stateInfo, layerIndex); } }