使用带有空闲动画的导航网格代理对游戏对象进行动画处理 - Unity 3d

问题描述 投票:0回答:1

我有一个名为

Zombie1
的 Unity 资产存储导入游戏对象,其中包含导航网格代理组件集和动画器组件(屏幕截图:)以及名为
Z_Idle
的动画。我想对我的
Zombie1
游戏对象实现空闲动画,因此我加强了状态
parado
,布尔参数也称为
parado
,并在条件下转换到名为
Z_Walk
Parado-Walk
状态
parado
设置为 true(动画窗口的屏幕截图:)。我还在
Zombie1
游戏对象中链接了这个脚本:

using UnityEngine;

public class Inimigo : MonoBehaviour
{
    private Animator animator;
    private UnityEngine.AI.NavMeshAgent agent;

    void Start()
    {
        animator = GetComponent<Animator>();
        agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
    }

    void Update()
    {
        if (agent.velocity.magnitude == 0)
        {
            animator.SetBool("parado", false);          
        }
        else if (agent.remainingDistance > agent.stoppingDistance)
        {
            animator.SetBool("parado", true);            
        }
        else
        {
            animator.SetBool("parado", false);
        }
    }
}

当我按下播放按钮时,僵尸不执行动画。我该怎么办?

c# unity-game-engine animation unity3d-editor animator
1个回答
0
投票

尝试添加一条调试语句来查看是否到达此代码块

else if (agent.remainingDistance > agent.stoppingDistance)
            {
                animator.SetBool("parado", true);            
            }

一旦您发现这部分代码是否已到达,您可能想检查它是否在设置为 true 后立即设置为 false。 要找到答案,您需要在更新函数中添加以下语句 Debug.Log(animator.GetBool("parado"));不断检查您的布尔值是否立即切换值,因为如果是这种情况,它不会保持移动状态足够长的时间,以便您可视化动画。 希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.