Unity Navmeshagent在到达停止距离时不会面对目标物体

时间:2016-03-08 07:58:49

标签: unity3d path-finding navmesh

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

当停止移动时,如何旋转导航线以面对我的角色?

4 个答案:

答案 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 个小时才找到这个。