0

我正在进行模拟,目前正在为其添加障碍。现在设置障碍的目的是让其他特工可以躲在他们身后,而其他人看不到它们。但是我试图找出检查是否最好的方法视野中的代理位于障碍物后面,因此无法看到。这是一个示例:

在此处输入图像描述

黑色的代理不应该看到红色的代理,但应该能够看到黄色的代理。(绿线表示黑色代理的视野)

目前,我的视野仅计算代理所处的角度并检查该角度是否在视野内。我正在查看游戏开发人员使用的一些解决方案,并且正在阅读有关光线投射的内容,但它似乎计算量很大,对我来说不是一个好的解决方案,因为我将有数百个代理投射光线。

我在想的另一件事是检查障碍物占据的角度(例如从 90 到 120 度),如果代理处于相同的角度范围内,则意味着他被障碍物挡住了。(如果有道理的话) .

我在这里发帖是为了询问是否有人可以指导我找到一个简单而有效的解决方案,因为我对这种与游戏开发相关的事情非常陌生。

提前致谢!

4

1 回答 1

1

如果是 2d,则创建两条线(以蓝色显示)并测试线和代理之间的距离。蓝线到代理的距离必须至少为代理半径,否则代理可见。还要给每条蓝线一个垂直的“法线”矢量,你可以用点来确定它在线条的哪一侧。如果它是 3d,您也可以这样做,但使用平面而不是线,您将需要 4 个或 mor 平面而不是 2 个。本质上,这就是截锥体剔除的方式。

在此处输入图像描述

于 2013-01-01T21:20:45.060 回答