【发布时间】:2019-05-08 18:52:43
【问题描述】:
我正在尝试在 Unity 3d 中创建一个游戏,其中 NPC 移动并环顾四周并检查哪些对象在他们的视角内。要计算视野角内的对象,我使用统一的内置函数 Vector3.Angle,请参阅:
// Get current position of the Robot.
var robotObjectPosition = currentTransform.parent.position;
// Get the direction to the object
var directionToObject = (objectToFind.transform.position - robotObjectPosition) / 2;
// Calculate the angle to the object and check if it's inside our viewAngle.
var isInsideAngle = Vector3.Angle(currentTransform.forward, directionToObject) < viewAngle / 2;
现在我有一个奇怪的问题,如果我靠近一个物体(在这种情况下是一个球门线形状的平面),上面的检查返回 false,即使该物体仍然在它前面并且球门线仍然清晰地在他的视野之内。我做了一个截图来可视化我的问题。 在第一幅图像中,球门线在他的视野内,但在第二幅图像中(我将他向前移动了一小步),尽管我可以清楚地看到他仍然在物体前面,但上述函数返回 false。我猜它与另一个对象的宽度有关(因为我将视角除以 2)但我无法找到解决方法。
主要是我想了解这里发生了什么。
【问题讨论】:
标签: c# unity3d artificial-intelligence game-development