我遇到的问题不是碰撞检测本身,而是检查顺序循环。
对于碰撞的检测,我使用的是AABB。
可视化表示,供参考。https:/i.imgur.com7SaeUjX.png。
场景一
场景二
解释一下我在方案2中遇到的问题。
问题出在碰撞的检查顺序上。循环开始检查玩家是否直接与[enemy1]碰撞,因为是第一个被检查的,所以[玩家]当然会检测到是与[enemy1]碰撞,并解决2次碰撞,结果不好。
如果改变列表的顺序,从[enemy2]开始,当然问题就会反过来。
为了避免这种情况,我应该怎么做?
好吧,在寻找和思考解决方案后,我最终得到了这个。
我的对撞机管理器现在是这样工作的(三步):
所以,现在主要的区别是,我先分析所有的重叠碰撞,之后再进行处理,在这种情况下,按重叠区域进行排序。
希望能帮到你