我正在进行模拟并且目前正在为它添加障碍。现在障碍的目的是让其他代理人可以隐藏在他们身后,而其他人却看不到它们。但是我想弄清楚什么是最好的方法检查视线中的代理人是否在障碍物背后,因此无法看到。这是一个例子:
黑色代理不应该看到红色的代理,但应该能够看到黄色的代理。(绿线表示黑色代理的视野)
目前,我的视野仅计算代理所处的角度,并检查角度是否在视野范围内。 我正在研究游戏开发人员使用的一些解决方案,并且正在阅读光线投射,但它看起来非常重,并且对我来说不是一个好的解决方案,因为我将有数百个代理人投射光线。
我想到的另一件事是检查障碍物占据视角的角度(例如从90度到120度),如果角色处于相同的角度范围内,则意味着他被障碍物挡住了。有道理)。
我在这里发帖是为了询问是否有人可以引导我找到一个简单而有效的解决方案,因为我对这种与游戏开发相关的事情都很陌生。
提前致谢!
答案 0 :(得分:1)
如果是2d,则创建两条线(以蓝色显示)并测试线和代理之间的距离。从蓝线到代理的距离必须至少为代理半径,或者代理是可见的。 同时为每条蓝线指定一个垂直的“正常”矢量,您可以将其对齐以确定它所在的线的哪一侧。 如果它是3d你做同样但使用飞机而不是线,你将需要4或mor飞机而不是2。 从本质上讲,这就是截头剔除的方法。