1

Java GUI を行うのは初めてで、いくつか質問があります。私は単純な横スクロール ゲームを作っています - 具体的には、それを計画しています。ウィンドウは 800x800 になります。

ゲームがスクロールすると (40 ピクセルごとに) 建物が描画されます。900px の黒い四角形を 1 つ作成し、そのコピーをさまざまなピクセルの高さに設定することを考えています (新しい建物の高さを変えるため)。次に、長方形の下部が自動的に切り取られます。

(1) それはうまくいきますか?

屋根の上の空に、クリックして撃墜してポイントを獲得できるターゲットを飛ばします。ターゲットの ImageIcon を作成し、それを画面上を移動して描画することを考えていました。しかし、ターゲット座標を追跡してからマウスクリック座標を取得して、それらが一致するかどうかを確認するのは難しいと思います。

(2)ターゲットがクリックでヒットしたかどうかを簡単に判断する方法はありますか(多くの座標と計算なしで)?

スケートボーダーが屋根の上を左から右に滑っています。彼の背後に隠された長方形を置き、それが特定の長方形の屋根と交差するかどうかを確認して、彼が着地したことを伝えようと考えていました。しかし、問題は、彼が屋根の中に入るまで交差しないことです. そして、私は彼が屋根の上にいることを望んでいます。

スケートボーダーがいつ屋根のすぐ上にいるのかを知るにはどうすればよいでしょうか (大量の座標計算は必要ありません)。

4

1 に答える 1

1

ゲームがスクロールすると (40 ピクセルごとに) 建物が描画されます。900px の黒い四角形を 1 つ作成し、そのコピーをさまざまなピクセルの高さに設定することを考えています (新しい建物の高さを変えるため)。次に、長方形の下部が自動的に切り取られます。

それは問題ありません-下部は切り取られます.

屋根の上の空に、クリックして撃墜してポイントを獲得できるターゲットを飛ばします。ターゲットの ImageIcon を作成し、それを画面上を移動して描画することを考えていました。しかし、ターゲット座標を追跡してからマウスクリック座標を取得して、それらが一致するかどうかを確認するのは難しいと思います。

これを行う簡単な方法は考えられません。ヒットの長方形領域をチェックすることはそれほど難しくありません。

if(mouseX >= targetX && mouseX < targetX+targetWidth &&
        mouseY >= targetY && mouseY < targetY+targetHeight){
    // is a hit
}

より良い衝突検出のために、ターゲット スプライトにマスク カラーを設定できます。これは非表示になっています (マスクを使用していない場合は、アルファが 0 かどうかを確認してください)。ターゲット画像領域内のマスクされていないピクセル上でマウスをクリックすると、ヒットが発生します。マウス イベントのルックアップを確認するには、MouseListener または MouseAdapter を使用します。

スケートボーダーが屋根の上を左から右に滑っています。彼の背後に隠された長方形を置き、それが特定の長方形の屋根と交差するかどうかを確認して、彼が着地したことを伝えようと考えていました。しかし、問題は、彼が屋根の中に入るまで交差しないことです. そして、私は彼が屋根の上にいることを望んでいます。

目に見えない四角形は必要ありません。スケートボーダーの画像には幅と高さが必要です。画像は左上から描画されるため、スケートボーダーのベースは、描画された Y 位置に画像の高さを加えたものになります。その値が屋根の境界を超えないようにする必要があります。

于 2010-09-24T08:44:19.807 に答える