1

私の問題は単純かもしれません。私は今日のほとんどを、マウスが指している方向を決定し、その方向に弾丸を発射するアルゴリズム (おそらく 2 つの if ステートメントになるでしょう) について考えてきました。私はすでに弾丸をテストして、定義された方向に発射して発射することを確認しました.

マウスがプレーヤーの左側、右側、上部、下部、またはプレーヤーの隅にあるかどうかを計算するにはどうすればよいですか?

解決済み:ご協力ありがとうございます。私がしたことは、if ステートメントを使用して、マウスを押し下げたときにプレーヤーの上部、下部、右、左、または角と衝突するかどうかを判断することです。とにかく、ここに私のコードがあります。PS変数x1をmousex、y1をmousey、xをplayerx、yをplayeryとして使用しました。私が持っている他の変数は dx と dy だけですが、それらが何をするか知っておく必要があります。

//top
if (x1 > x && x1 < x + 40 && y1 > y - 250 && y1 < y){
        dy = -1;
    dx = 0;
}
//right
if (x1 > x + 40 && x1 < x + 250 && y1 > y && y1 < y + 40){
    dx = 1;
    dy = 0;
}
//bottom
if (x1 > x && x1 < x + 40 && y1 > y+40 && y1 < y+250){
    dy = 1;
    dx = 0;
}
//left
if (x1 < x && x1 > x - 250 && y1 > y && y1 < y + 40){
    dx = -1;
    dy = 0;
}
//top right corner
if (x1 > x + 40 && x1 < x + 250 && y1 > y - 250 && y1 < y){
    dx = 1;
    dy = -1;
}
//top left corner
if (x1 < x && x1 > x - 250 && y1 > y - 250 && y1 < y){
    dx = -1;
    dy = -1;
}
//bottom right corner
if (x1 > x + 40 && x1 < x + 250 && y1 > y + 40 && y1 < y + 250){
    dx = 1;
    dy = 1;
}
//bottom left corner
if (x1 < x && x1 > x - 250 && y1 > y + 40 && y1 < y + 250){
    dx = -1;
    dy = 1;
} 
4

1 に答える 1

1

マウスボタンが押されている間の射撃を実装したい場合は、Mouse move actionlistener を実装する必要があります。

単純な直線の方程式でそれができます。

(x0,y0)解決策:ボタンが押されたときの初期点を取得します。押されたときにマウスが移動している間(x1,y1)、マウスが移動しているポイントを取得します (これは常に変化します) - 直線の方程式を取得します (2slopeつのポイントがあるため、1 つのポイントを使用して を取得しますequation of the line)。

これで、弾丸が発射される方向はperpendicular to this line through (x1,y1). したがって、他の方程式がわかっている場合、この垂線の方程式を見つけることができます。発射する必要があるか下向きに発射する必要があるかを知ることは、銃がどちらの側を向いているかを見つけることに関連しています(方向は変数に保存されます)

この後、マウスがまだ動くと、古いポイントになり(x1,y1)、新しいポイントになり(x2,y2)、これらの変更を実装し続けます。

于 2012-05-11T22:01:03.477 に答える