2011-07-11 24 views
0

説明:Androidの衝突検出

私はほぼ完了ですプロジェクトを持っているが、私は衝突が実際に動作していない気づきました。これはタッチスクリーンでコントロールできるヘビのようなゲームなので、シャープな(?、すみませんな)角度が可能です。現時点では、ちょっとした旋回を可能にするために少しの許容範囲を残しています(最初の2つのスプライトを無視してください)。主な問題は、スプライトが回転しており、結果的にオーバーサイズの衝突ボックスになることです。私はゲームエンジンやOpenGLを使用していません。

衝突コード: offsetX offsetY &ビットマップは幅または高さ/ 2され、蛇の頭に呼ばれています。蛇の各リンク(鳥)が配置可能

public boolean doesHit(Placeable p) { 
    int xLen = Math.abs(this.x - p.x); 
    int yLen = Math.abs(this.y - p.y); 
    if (bmp != null) { 
     if (xLen < offsetX + p.offsetX && yLen < offsetY + p.offsetY) 
      return true; 
    } else { 
     if (xLen < Bird.BIG_W[Bird.mUseBird]/2 
       && yLen < Bird.BIG_H[Bird.mUseBird]/2) 
      return true; 
    } 
    return false; 
} 

TLであり、DR /質問:Rectsを回転させ、その後、(それらを比較する方法はあり

好ましく、ゲームはすでに完成しているようこれから離れて)?または、最も単純な方法は、OpenGL /ゲームエンジンに移植することですか?

答えて

2

最良の選択肢は、OpenGLに行き、交差した回転ポリゴンを使用することです。

しかし、私は速いハックのために、スプライトを矩形の代わりに円として考えるようにdoesHit()ルーチンを変更します。この方法では、回転させたときに境界外には成長しません。価格は衝突検出がコーナーでは致命的であるということです。

+0

これは意味があります。しかし、私はそれを実装する方法を考えることはできません。どうしますか? – SBoss

+0

試してみてくださいhttp://fypandroid.wordpress.com/2011/07/03/how-to-calculate-the-intersection-of-two-circles-java/ –