当我和他说话时,我试图让NPC看看主角。我需要确保它看起来自然而且他正面对我。我知道我可以做Transform.LookAt(),但那太过于即时和不自然。
当停止移动时,如何旋转导航线以面对我的角色?
答案 0 :(得分:2)
尝试此操作来控制身体方向 - 可以根据您所需的旋转速度(https://docs.unity3d.com/ScriptReference/Quaternion.Slerp.html)调整slerp:
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]);
}
答案 1 :(得分:0)
也许试试这个Head Look Controller。它非常流畅,与动画融为一体!
答案 2 :(得分:0)
if(agent.remainingDistance < agent.stoppingDistance)
{
agent.updateRotation = false;
//insert your rotation code here
}
else {
agent.updateRotation = true;
}
当代理距离stopsDistance变量时,它会旋转代理。然而它会看起来很不人道,所以如果你想要人形ai,我建议你看一下Mecanim demo(特别是运动场景),因为它有代码和动画,可以使代理动画正常。
答案 3 :(得分:0)
将字符放入游戏对象并将导航网格从字符复制到父对象,取消选中启用字符。也将任何脚本向上移动。 只花了 5 个小时才找到这个。