は電球が常にプレイヤーに向けて動いているので、それを設定します。
public void tick() {
bulbX += (playerX - bulbX)/2;
bulbY += (playerY - bulbY)/2;
}
このようにして、電球は離れた方が速くプレーヤーに向かって動きます。 1/2パラメーターを調整する必要があるかもしれません。
私は自分のコードに時差を追加したいので、ゲームはフレームレートで減速しません。
long time1 = System.currentTimeMillis();
while(running){
long time2 = System.currentTimeMillis();
float timeDiff = (time2-time1)/1000f;
time1 = time2;
tick(timeDiff);
}
とティック法:
public void tick(float timeDiff){
float factor = 2;
bulbX += (playerX - bulbX)*factor*timeDiff;
bulbY += (playerY - bulbY)*factor*timeDiff;
}
このように、十分に高いフレームレートで、電球は指数関数的にプレイヤーをaproachう。
あなたがそれを削除したときにカーソルに向かって弾丸を弾くことに関するあなたの質問に答えていました。それはまたここで助けになると思いますので、それは話題ではありません。まず、(x、y)座標は基本的にベクトルであることに気付く。次に、googleを次のように読み、 "ベクトルを減算する"(位置を引くと、あるオブジェクトから別のオブジェクトへベクトルを提供する、これは "平行移動ベクトル"を取得する)、 "ベクトルの大きさを計算する方法"、 "単位ベクトル "を計算し、変換ベクトルを大きさで除算して単位ベクトルを求め、希望の速度を掛けて(x、y)速度を求め、ティックタイムを掛けます。 – Aaron
あなたは最高です。本当にありがとう。私は本当にあなたのサポートに感謝します。私はそれをやる方法を考え出した。 @Aaron –