C# 如何渲染和检测视线?

C# 如何渲染和检测视线?,c#,math,trigonometry,C#,Math,Trigonometry,如果你看右上角,你会在雷达上看到敌军单位的视线 我想知道什么是最有效或最简单的方法(小代码,相当准确。不需要完美)来检测你的视线中是否有东西?我可能需要也可能不需要渲染它(我可能不会) 我不知道这个公式,也没有在C中使用任何数学库/名称空间# -编辑- 基本上这是一个2d原型。没有什么是完美的,它将有可移动的相机,单位,它将只看左右向上向下,但不是对角线。可能有一堵墙挡住了视线,但没有别的东西。其他敌人也不应该在进入时触发行动 所以我真的需要一个来源(敌人),一个dst(玩家),并记录阻挡视线的

如果你看右上角,你会在雷达上看到敌军单位的视线

我想知道什么是最有效或最简单的方法(小代码,相当准确。不需要完美)来检测你的视线中是否有东西?我可能需要也可能不需要渲染它(我可能不会)

我不知道这个公式,也没有在C中使用任何数学库/名称空间#

-编辑-

基本上这是一个2d原型。没有什么是完美的,它将有可移动的相机,单位,它将只看左右向上向下,但不是对角线。可能有一堵墙挡住了视线,但没有别的东西。其他敌人也不应该在进入时触发行动

所以我真的需要一个来源(敌人),一个dst(玩家),并记录阻挡视线的墙


-编辑-我最终使用了一个rect。这已经足够好了,我能够在原型中处理其他事情,然后编写raycast代码。

这实际上取决于如何设置世界几何体,但通常的方法是通过。也就是说,在你和敌人(或你感兴趣的任何东西)之间画一条假想的线,然后查询环境,看看是否有任何几何体与该线相交


不同的世界几何体将有不同的光线投射方法(例如,BSP树与入口系统不同,与heightfield地形也不同,等等)。

确定视角,然后只绘制矢量?它不需要复杂或非常快。只是速度不是那么慢。我编辑这个问题是为了获取更多信息。同样,这完全取决于你如何存储你的世界几何体。如果你的世界是由代表“墙”的线的简单列表组成的,那么你只需要在连接玩家和敌人的线与构成墙的线之间进行一系列光线相交。如果有任何交叉,那么你的视线就会被阻挡。