在我的 2D 马里奥类游戏中,我遇到了一个关于碰撞的错误。
public void collision() {
if (Rect.intersects(Robot.rect2, r)){
robot.setSpeedY(0);
robot.setCenterY(tileY - 32);
robot.setJumped(false);
} else if (Rect.intersects(Robot.rect, r)){
robot.setSpeedY(0);
robot.setCenterY(tileY + 32);
}
updateRect();
if (Rect.intersects(Robot.rect3, r)){
robot.setCenterX(tileX + 32);
robot.setSpeedX(0);
} else if (Rect.intersects(Robot.rect4, r)){
robot.setCenterX(tileX - 32);
robot.setSpeedX(0);
}
}
通过比较矩形来检查我的游戏中的碰撞。我的机器人的矩形:rect(底部碰撞,所以我的机器人精灵下半部分的矩形)、rect2(顶部碰撞)、rect3(左碰撞)和 rect4(右碰撞)。
我游戏中的每个图块都由一个实例化的 Rectangle r 界定。当我的机器人的矩形和瓦片的矩形相交时,我调用了碰撞(),它设置了我的机器人方向的位置。
这是我的问题:如果我的机器人在一个角落,它处于底部碰撞和右侧碰撞中,并且我向右移动,我的机器人移动到右侧的瓷砖中,这会触发底部碰撞,并将所有东西都拧紧。
切换底部/顶部和右/左碰撞的位置并没有帮助,因为从那时起同样的问题发生了,机器人掉入地面,触发了右/左碰撞。
本质上,我需要一种同时运行所有四个的方法。谢谢