私は、あなたが弾丸を発射する単純な円であり、そのマルチプレイヤーなどであるゲームに取り組んでいます。さて、私は境界を、通過しなければならない迷路タイプのもののようなものにしようとしています。次のような衝突検出を試みました。
public void checkCollisions(){
Rectangle r1 = bo.getBounds();
Rectangle d = p.getBounds();
if (d.intersects(r1))
border = true;
}
基本的に、border = true の場合、キャラクターの動きを止めます。これを行うと、2つの問題があります。
- 彼は止まらないだけで本当に遅くなります。
- 彼は国境を越えても本当に遅い状態のままです。
私はこのような境界線を使用します:
boolean border = false;
次に、ペイントメソッドでこれを述べます:
if (border)
p.dx = 0;
p.dy = 0;
p は Guy クラスを表します :P dx と dy の詳細:
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_A)
dx = -2;
if (key == KeyEvent.VK_D)
dx = 2;
if (key == KeyEvent.VK_W)
dy = -2;
if (key == KeyEvent.VK_S)
dy = 2;
keyReleased については、dx と dy の値を 0 に変更して、男の動きについても説明します。
public void move() {
x = x + dx;
y = y + dy;
}
これが機能しない理由を理解するのを手伝ってください。