c# - 如何渲染和检测视线?

标签 c# math trigonometry

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

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

我不知道公式,也不使用 C# 中的任何数学库/命名空间

-编辑-

基本上这是一个二维原型(prototype)。没有什么必须是完美的,它将有可移动的相机、装置,并且它只会看起来左、右、上、下,而不是对角线。可能有一堵墙挡住了视线,但没有其他东西。另外,其他敌人在走进其中时不应触发 Action 。

所以我真的需要一个来源(敌人),一个目标(玩家)并记住阻挡视野的墙壁。

alt text

-编辑-我最终使用了一个矩形。这已经足够好了,我能够在原型(prototype)中处理其他事情,然后编写光线转换代码。

最佳答案

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

不同的世界几何体将有不同的执行光线转换的方法(例如,BSP 树与门户系统不同,而门户系统又与高度 field 形不同,等等)。

关于c# - 如何渲染和检测视线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2696338/

相关文章:

math - GIS 开发的核​​心数学

c# - Entity Framework 模型第一个导航属性添加无效的列名来查询?

c# - C#中的慢速屏幕绘制

math - 射线转换与具有法线和偏移的无限平面相交

algorithm - 找到一段最终周期序列

objective-c - 沿标尺对象的边缘绘图

c++ - (C++) 夹持圆内二维位置(使用中点圆算法绘制)

javascript - Angular 方向正弦波

c# - 从 OpenFileDialog 路径/文件名中提取路径

c# - NuGet 包导致 visual studio 2015 和 Xamarin 出现问题