统一转换.翻译永不停止



如果我不撞到模型(不是玩家(在场景中走动,脚本工作正常。
但是,如果我用角色控制器碰撞模型,模型在达到等待动画状态后将继续移动。

为什么会这样呢?我该如何解决它?

    public class MoveMan2 : MonoBehaviour
{
    public float speed = 0.85f;
    public Animator anim;
    void Start()
    {
        anim = GetComponent<Animator>();
        InvokeRepeating("SetWalkMode",5.0f,20.0f);
    }
    void SetWalkMode()
    {
        anim.Play("SkitsWalk", -1, 0f);
    }
    void Update()
    {
        if (anim.GetCurrentAnimatorStateInfo(0).IsName("SkitsWalk"))
        {
            Debug.Log("Skits walking");
            transform.Translate(0, 0, speed * Time.deltaTime);
        }
        if (anim.GetCurrentAnimatorStateInfo(0).IsName("Wait"))
        {
            Debug.Log("Waiting");
        }
    }
}

InvokeRepeating 的第三个参数是再次调用您指定的方法的频率。因此,Unity 将每 20 秒调用一次 SetWalkMode。当您的模型进入"等待"状态时,此方法将在 20 秒内重置它。

您可以在检测到冲突时设置一个变量(如布尔值(,并在 SetWalkMode 方法中检查该变量。

bool isObjectInCollision = false;
void EnterCollision()
{
    // do something
    isObjectInCollision = true;
}
void LeaveCollision()
{
    // do something
    isObjectInCollision = false;
}
void SetWalkMode()
{
    if (isObjectInCollision)
       return;
    anim.Play("SkitsWalk", -1, 0f);
}

最新更新