1

当我和他说话时,我试图让 NPC 看着主角。我需要确保它看起来很自然,并且他面对着我。我知道我可以做 Transform.LookAt() 但这太即时且不自然。

当 navmeshagent 停止移动时,如何旋转它以面对我的角色?

4

4 回答 4

2

试试这个来控制身体方向 - slerp 可以调整到您想要的旋转速度(https://docs.unity3d.com/ScriptReference/Quaternion.Slerp.html):

private void FaceTarget(Vector3 destination)
{
    Vector3 lookPos = destination - transform.position;
    lookPos.y = 0;
    Quaternion rotation = Quaternion.LookRotation(lookPos);
    transform.rotation = Quaternion.Slerp(transform.rotation, rotation, [fill in desired rotation speed]);  
}
于 2017-09-09T21:00:09.810 回答
1
if(agent.remainingDistance < agent.stoppingDistance) 
{
    agent.updateRotation = false;
    //insert your rotation code here
}
else {
    agent.updateRotation = true;
}

当它的距离低于 stopDistance 变量时,这将旋转您的代理。但是它看起来很不人道,所以如果你想要一个人形人工智能,我建议你看一下统一的Mecanim 演示(特别是运动场景),因为它有代码和动画可以正确地为代理设置动画。

于 2017-09-13T02:05:24.323 回答
0

也许试试这个Head Look Controller。它非常流畅,并与动画融为一体!

于 2016-03-08T08:36:09.550 回答
0

将 char 放入游戏对象并将导航网格从 char 复制到父级,取消选中 char 中的启用。也向上移动任何脚本。花了5个小时才找到这个。

于 2021-05-19T06:08:20.777 回答