我搜索了碰撞检测主题,但它们都是关于检测本身的。我的问题更多是关于检测过程之前和之后的。我正在编写我的第一个大型游戏,我想让它尽可能高效。
游戏的前提是您在运动场周围驾驶一艘船。在这个领域将是由环境、敌舰和在太空中飞行和漂浮的弹丸提供的不同性质的障碍物。如果需要或想要,这些对象将能够围绕它们的中心等旋转。
我设置测试的想法是让对象以某种方式将自己加载到队列和列表中。然后,游戏将获取队列前面的任何内容,并针对列表中的所有内容进行测试。它会首先检查以确保列表中的东西不是它自己(这会一直为所有东西产生冲突,哈哈)。接下来,游戏将检查队列中的对象与列表中的对象之间是否存在碰撞。如果发生碰撞,它将标记对象说它们已经碰撞并保存引用或对象碰撞的任何内容。
例如,如果 A 与 B 发生碰撞,游戏将告诉 A 运行碰撞函数,B 运行碰撞函数,并将对 B 的引用存储到 A 中,并且 B 将存储对 A 的引用。
然后,游戏将继续检查队列中对象的碰撞,直到它遍历列表,每次都执行上述操作以说明一个对象击中或被多个对象击中。
例如,如果有三个球,A、B 和 C,并且 A 在同一帧中同时被 B 和 C 击中,则 A 的速度会先由 B 再由 C 修改,而 B 和 C 将由 A 修改它们的速度。
这会是一个聪明的方法吗?我现在并不担心碰撞的实际检测,有很多可用的文章或教程加上我自己的想法来解决这个问题。我没有遇到任何谈论之前和之后的事情。我不确定队列和列表中有多少东西会开始导致大量负载并减慢游戏速度。现在我的对象都只是 x,y 位置、x,y 速度、它们面对的方向以及其他一些东西。
现在我想我开始喋喋不休地谈论无关的事情了。任何见解或智慧将不胜感激。