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 によって囲まれています。ロボットの四角形とタイルの四角形が交差すると、collision() が呼び出され、ロボットの方向の位置が設定されます。
ここに私の問題があります: ロボットが隅にいて、下と右が衝突している場合、右に移動すると、ロボットが右のタイルに移動し、下の衝突がトリガーされ、すべてが台無しになります。
下/上と右/左の衝突の位置を切り替えても、ロボットが地面に落ちて右/左の衝突が引き起こされるという同じ問題が発生するため、役に立ちません。
基本的に、4 つすべてを同時に実行する方法が必要です。ありがとう