0

こんにちはみんな私はあなたが私を助けることができることを願っています。ゲームをコーディングしようとしましたが、衝突に失敗しました。たくさん検索したところ、バウンディングボックス方式(スプライトの周りに見えない長方形を作成する方法)が私にとって最良の解決策であることがわかりました。しかし、intersectメソッドは私には機能しません。衝突する2つのビットマップスプライトがありますが、LogCatでは衝突はありません...

スプライトNo.1クラス

public Sprite(GameView theGameView, Bitmap bmp) {
    this.theGameView = theGameView;
    this.bmp = bmp;
    this.width = bmp.getWidth();
    this.height = bmp.getHeight();
    ySpeed = 0;
    xSpeed = 1;
}


 public Rect bounds() {         
        return (new Rect(x,y,width,height));
    }


public void onDraw(Canvas canvas) {
    canvas.drawBitmap(bmp, x, y, null);
}

スプライトNo.2クラス

public FourthSprite(GameView theGameView, Bitmap bmp) {
    this.theGameView = theGameView;
    this.bmp = bmp;
    this.width = bmp.getWidth();
    this.height = bmp.getHeight();
    ySpeed =  0;
    xSpeed = -1;
}


public Rect bounds() {
    // TODO Auto-generated method stub
    return (new Rect(x,y,width,height));
}

public void onDraw(Canvas canvas) {
         canvas.drawBitmap(bmp, x, y, null);
}

}

GameViewクラス

public voidcollision(){

   Rect r1 = theSprite.bounds();  // Sprite on left side
       Rect r4 = theSprite4.bounds(); // Sprite on right side

  if (r1.intersect(r4)){

       collision = true;
       Log.v("Log Tag", "COLLISION :D :D :D :D :D :D :D");
   }

  else       {
       collision = false;
       Log.v("Log Tag", "NO COLLISION");
  }
    }

それが助けになるなら、私はビデオをアップロードすることもできます。

編集: http: //youtu.be/wYxZ7nKsmdw 1つのスプライトが動き回らず、x、y座標が0の場合、衝突が機能していることがわかりました。問題は何でしょうか。

4

2 に答える 2

1

LogCatに出力しているビデオとデータによると、移動機能に問題があるようです(質問には記載されていません)。

left長方形の座標は変化していますが、right座標は変化していません。しばらくするleftと、1 つの長方形の座標が座標よりも大きくなりright、その結果、intersects関数は false を返します。

余談ですが、コードを別の方法で構造化することを検討する必要があります。多くの非常に類似したクラスの代わりに継承を使用してみてください。

于 2012-12-08T12:19:20.047 に答える
0

Rect を取得するために使用しているライブラリがわかりません (標準ライブラリには Rectangle がありますが、Rect はありません)。

私の提案は、最初に衝突が発生したときに長方形の境界を出力してエラーチェックを行い、実際に交差するかどうかを確認することです。それがうまくいけば、使用している交差関数が機能しない場合は、おそらく独自の交差関数を作成することになります。簡単なグーグルでc/javascriptでこれを教えてくれましたが、Javaで簡単にやり直すことができます。

長方形から長方形への高速交差

于 2012-12-08T12:20:28.047 に答える