説明:
現在、ほぼ完成しているプロジェクトがありますが、衝突が実際には機能していないことに気付きました。タッチ スクリーンを介して制御できるヘビのようなゲームなので、鋭い (?、申し訳ありませんがドイツ語) 角度が可能です。現時点では、少し回転できるように、少し許容範囲を残しています (最初の 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 / ゲーム エンジンに移植するのが最も簡単な方法でしょうか?