物理学 - AABB 碰撞后如何调整?
Physics - How do you adjust after an AABB collision?
当玩家与方块碰撞时,我根据最小的轴变化移动他们,这是有道理的。
然而,当许多块相互交互时,这会变得混乱。
- 黑色方块 - 玩家,移动
- Red/Blue 正方形 - 方块,静态
从这个例子来看,玩家显然应该向上移动,但是各个方块的视点不同
- 蓝框在Y轴上碰撞较多,所以黑框应该向左移动。如果你假装红框不存在,你会更容易看到这一点
- 红框在X轴上碰撞较多,所以黑框应该向上移动
我怎么知道哪个框是 "correct"?
解决方案是为 X 和 Y 找到最近的块
在这种情况下,红色块离X轴较近,所以应该用来固定Y轴
此外,为防止方块将玩家移到角落,请添加宽限缓冲区。在下图中,紫色和绿色区域略小于播放器的大小。
如果一个方块在其中一个轴上最近,并且在该区域中,那么它应该用于碰撞
当玩家与方块碰撞时,我根据最小的轴变化移动他们,这是有道理的。
然而,当许多块相互交互时,这会变得混乱。
- 黑色方块 - 玩家,移动
- Red/Blue 正方形 - 方块,静态
从这个例子来看,玩家显然应该向上移动,但是各个方块的视点不同
- 蓝框在Y轴上碰撞较多,所以黑框应该向左移动。如果你假装红框不存在,你会更容易看到这一点
- 红框在X轴上碰撞较多,所以黑框应该向上移动
我怎么知道哪个框是 "correct"?
解决方案是为 X 和 Y 找到最近的块
在这种情况下,红色块离X轴较近,所以应该用来固定Y轴
此外,为防止方块将玩家移到角落,请添加宽限缓冲区。在下图中,紫色和绿色区域略小于播放器的大小。
如果一个方块在其中一个轴上最近,并且在该区域中,那么它应该用于碰撞