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, GeneralDefine.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);
|
}
|
}
|