AS3 Bullet hitscan

0 actionscript-3

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

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

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

Kai*_*Kai 5

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

如果你知道只有2颗子弹,那么你可以通过射击子弹和另一颗子弹产生的射线之间的距离检查来解决这个问题.如果距离小于子弹的总和半径,那么你知道他们已经击中了.

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

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