当我和他说话时,我试图让 NPC 看着主角。我需要确保它看起来很自然,并且他面对着我。我知道我可以做 Transform.LookAt() 但这太即时且不自然。
当 navmeshagent 停止移动时,如何旋转它以面对我的角色?
当我和他说话时,我试图让 NPC 看着主角。我需要确保它看起来很自然,并且他面对着我。我知道我可以做 Transform.LookAt() 但这太即时且不自然。
当 navmeshagent 停止移动时,如何旋转它以面对我的角色?
试试这个来控制身体方向 - 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]);
}
if(agent.remainingDistance < agent.stoppingDistance)
{
agent.updateRotation = false;
//insert your rotation code here
}
else {
agent.updateRotation = true;
}
当它的距离低于 stopDistance 变量时,这将旋转您的代理。但是它看起来很不人道,所以如果你想要一个人形人工智能,我建议你看一下统一的Mecanim 演示(特别是运动场景),因为它有代码和动画可以正确地为代理设置动画。
也许试试这个Head Look Controller。它非常流畅,并与动画融为一体!
将 char 放入游戏对象并将导航网格从 char 复制到父级,取消选中 char 中的启用。也向上移动任何脚本。花了5个小时才找到这个。