AS3 Bullet hitscan

时间:2011-01-04 02:04:01

标签: actionscript-3

看看这个场景,我有两个角色,一个在另一个角色的方向射出两颗子弹,子弹立即射击并以无限速度行进,如何检测碰撞?

这是一张用来说明问题的图片:

红色子弹显然会错过,但绿色子弹会撞到,如何进行这种碰撞测试?

1 个答案:

答案 0 :(得分:5)

此类碰撞测试称为ray casting。它的实现可以从简单到非常复杂,具体取决于您的具体应用以及您愿意投入多少时间来提高性能。如果您有兴趣,绝对可以在线搜索主题,或者选择一本游戏编程书。这是3D游戏的常见操作。

如果您知道只有2颗子弹,那么只需在射击子弹和其他子弹创建的射线之间进行距离检查即可解决此问题。如果距离小于子弹的总和半径,那么你知道它们已经击中了。

如果你正在制造某种游戏引擎,其中许多子弹将会移动,那么我能想到的最简单的方法就是沿着射出的射线移动子弹(normalizing子弹的运动矢量)以小增量(不大于子弹的半径)并在每一步执行碰撞检查。

无论您最终使用哪种光线投射方法,它都会与您用于spacial partitioning的任何系统紧密集成。当您进行光线投射时,无法避免查询许多空间位置,因此请确保为您的目的使用有效的空间分区系统。