看一下这个场景,我有两个角色,一个朝另一个角色的方向发射了两颗子弹,子弹是瞬间发射的,并且以无限的速度行进,如何检测碰撞?
下面是一个说明这个问题的图片:

红色的子弹显然会打偏,但绿色的子弹会击中,如何进行这种碰撞测试?
发布于 2011-01-04 12:22:58
这种类型的碰撞测试称为ray casting。它的实现可以是简单的,也可以是非常复杂的,这取决于您的特定应用程序以及您愿意投入多少时间来提高性能。如果你感兴趣,一定要在网上搜索这个主题,或者拿起一本游戏编程书。这是3d游戏的常见操作。
如果你知道只会有2颗子弹,那么你可以通过检查发射的子弹和另一颗子弹产生的射线之间的距离来解决这个问题。如果距离小于子弹的总和半径,那么你就知道他们击中了。
如果你正在制作某种游戏引擎,很多子弹都在移动,那么我能想到的最简单的方法就是沿着发射它的光线移动子弹(通过normalizing子弹的移动矢量),以小的增量(不大于子弹的半径)移动子弹,并在每一步执行碰撞检查。
无论您最终使用哪种光线投射方法,它都将与您用于spacial partitioning的任何系统紧密集成。在进行光线投射时,无法避免查询许多空间位置,因此请确保使用有效的空间分区系统。
https://stackoverflow.com/questions/4590072
复制相似问题