如果你看右上角,你会在雷达上看到敌方单位的视线。
我想知道什么是最有效或最简单的方法(少量代码,相当准确。不需要完美)来检测某些东西是否在您的视线范围内?我可能需要也可能不需要渲染它(我可能不会)。
我不知道公式,也不使用 C# 中的任何数学库/命名空间
-编辑-
基本上这是一个二维原型(prototype)。没有什么必须是完美的,它将有可移动的相机、装置,并且它只会看起来左、右、上、下,而不是对角线。可能有一堵墙挡住了视线,但没有其他东西。另外,其他敌人在走进其中时不应触发 Action 。
所以我真的需要一个来源(敌人),一个目标(玩家)并记住阻挡视野的墙壁。
-编辑-我最终使用了一个矩形。这已经足够好了,我能够在原型(prototype)中处理其他事情,然后编写光线转换代码。
最佳答案
这实际上取决于你的世界几何结构的设置方式,但通常的方法是通过 ray casting 。也就是说,您在自己和敌人(或您感兴趣的任何事物)之间画一条假想线,并查询环境以查看是否有任何几何图形与该线相交。
不同的世界几何体将有不同的执行光线转换的方法(例如,BSP 树与门户系统不同,而门户系统又与高度 field 形不同,等等)。
关于c# - 如何渲染和检测视线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2696338/