我在试着做一个平台游戏。我有冲突代码(几乎),但似乎有一个bug。我尝试了下面的代码:
for (int i = 0; i < world.ground.size(); i++) {
if (!world.ground.get(i).intersects((int) x, (int) y, player_width, player_height + (int) dy)) {
y += dy;
if (dy < 4) {
dy += 0.1;
}
我使用这代码来检测两个OBB之间的交叉点。问题是我发现之后不知道该怎么办。我尝试使用一个简单的算法:
if (collision detected) {
move character back to its position on previous frame
}
但这不是我所需要的,因为字符是旋转和移动到某些点(通常是鼠标点击位置)。当它接近带有OBB的对象并旋转到某个点时,它的OBB更新(所有OBB角的位置都会重新计算),并且大多数情况下,更新的OBB与一个临近的对象交叉,因此字符被卡在它的位置上。
如何处理旋转问题,或者当它的OBB与另一个字符迭代时,可以