我正在进行模拟,目前正在向it.Now添加障碍物障碍物的目的是使其他智能体可以隐藏在它们后面,而其他智能体看不到them.However。我正在尝试找出检查视图中的智能体是否在障碍物后面从而不可能是障碍物的最佳方法。seen.Here是一个例子:
穿黑色的代理应该看不到红色的代理,但是应该能够看到黄色的代理。(绿色线条表示黑色代理的视野)
目前,我的视野只计算智能体所处的角度,并检查该角度是否在视野内。我在看一些游戏开发人员使用的解决方案,并且正在阅读光线投射,但是它似乎计算量很大,对我来说不是一个好的解决方案,因为我将有数百个代理投射光线。
我在想的另一件事是检查障碍物占据视图的角度(例如,从90度到120度),如果智能体在相同的角度跨度,这意味着他被障碍物挡住了。(如果这是有意义的)。
提前感谢!
发布于 2013-01-02 05:20:45
如果是2d,则创建两条线(以蓝色显示),并测试线与代理之间的距离。从蓝线到座席的距离必须至少为座席半径,或者座席可见。还要给每条蓝线一个垂直的“法线”矢量,你可以用它来确定它在线的哪一边。如果它是3d的,你可以做同样的事情,但使用平面而不是直线,你将需要4个或更多的平面而不是2个。本质上,这就是如何完成截锥剔除。
https://stackoverflow.com/questions/14111640
复制相似问题