我如何渲染和检测视线?

时间:2010-04-23 05:07:22

标签: c# math trigonometry

如果你看右上方,你会在雷达上看到一个敌方单位的视线。

我想知道什么是最有效或最简单的方法(小代码,相当准确。不需要完美)来检测是否有某些东西在您的视线范围内?我可能需要也可能不需要呈现它(我可能不会)。

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

-edit -

基本上这是一个2d原型。没有什么必须是完美的,它将有可移动的相机,单位,它只会向左看,而不是对角线。可能有一堵墙阻挡视线,但没有别的。当其他敌人走进它们时也不应该触发动作。

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

alt text http://image.com.com/gamespot/images/screenshots/gs/action/metalgearsolid/metalgearsolid_790screen001.jpg

-edit-我最后使用了一个矩形。它足够好了,我能够在原型中处理其他事情,然后编写光线投射代码。

1 个答案:

答案 0 :(得分:3)

这实际上取决于您的世界几何图形的设置方式,但通常的方法是通过ray casting。也就是说,你在自己和敌人(或者你感兴趣的任何东西)之间绘制一条想象线,并查询环境,看看是否有任何几何与该线相交。

不同的世界几何体将具有不同的执行光线投射的方法(例如,BSP树将与门户系统不同,这将再次与高度场地形不同,等等。)