我目前使用的集合检测方法可以解释碰撞,但会根据方向产生奇怪的效果。它会:
- 如果玩家击中对象的右侧,则始终工作。
- 如果玩家击中对象的顶部或底部,则将玩家推到一边。
- 如果玩家撞到对象的左侧,则第一次工作,但下次在左侧检测到碰撞时会将玩家传送到对象的另一侧。
这是当前的碰撞检测代码:
if(player.playerBounds.intersects(portal.bounds)&&player.isMovingLeft){
player.playerX=(portal.x+portal.width);
player.playerX++;
}
else if(player.playerBounds.intersects(portal.bounds)&&player.isMovingRight){
player.playerX=(portal.x-player.width);
player.playerX--;
}
else if(player.playerBounds.intersects(portal.bounds)&&player.isMovingUp){
player.playerY=(portal.y+portal.height);
player.playerY--;
}
else if(player.playerBounds.intersects(portal.bounds)&&player.isMovingDown){
player.playerY=(portal.y+player.height);
player.playerY++;
}