あなたは正しい方向に進んでいるようです。基本的に、パドルがある場所に到達したときにボールの位置がどこになるかを把握する必要があります。
これは、x速度とy速度を見つけて、上壁と下壁がどこにあるかを追跡することで簡単に実行できます。
xとyの速度を見つけるには、基本的に、設定された時間間隔でボールがx方向とy方向にどれだけ移動したかを調べます。したがって、t = 0で(100(x)、50(y))の位置を見つけたとしましょう...次に、t = 1でボールが(110、65)にあることがわかります。これは、ボールがx方向に単位時間あたり10(ピクセル)、y方向に単位時間あたり15(ピクセル)移動します。
それでは、参考のために使用する部屋のサイズを設定しましょう。部屋を200(x)x 150(y)にして、最も遠いパドルが200になり、最も近いパドルがxの0になります...そして部屋の底が150になり、上部が0になります。 y。
パドルがにある場合はx = 200
、そこに到達するのに時間がかかり(200-110)(pixels)/10(pixels per time)
ます。ボールがパドルに到達するのにかかる時間がわかったので、ボールがy軸のどこにあるかを把握できます。パドルを使用すると、パドルx=200
に到達するまでにさらに9単位の時間がかかることがわかります。したがって、時間にy方向の変化率を掛けて、ボールがy方向にどれだけ移動するかを求めます。したがって、簡単に計算すると、ボールがy軸上で135(ピクセル)移動したことがわかります。
しかし、振り返ってみると、私たちの部屋の高さはわずか150ピクセルであることがわかります。で開始しy=65
、65 + 135は200であり、これは制限の150よりも大きいです。したがって、そこでバウンスする必要があります。y = 150
したがって、y = mx + bの形式の一次方程式を使用するだけで、ボールがいつ到達するかを見つけることができます。ここで、mはy速度、bは開始y点です。Xは時間の単位で測定され、yは距離の単位で測定されます。
したがって、衝突が発生するyがであることがわかっているy=150
ので、移動速度としてmを、元のy位置であるbをプラグインします。
150=(15)(x)+65
xをすばやく解いて、5および2/3単位の時間を取得できます。これで、パドルに当たるまでの合計時間からこれを差し引くことができます(9 units)-(5 and 2/3 units) = (3 and 1/3 units of time)
。バウンス後、y速度は負になりますが、単純なバウンスを想定すると同じ速度になります。したがって、y=mx+b
方程式を再度使用できますが、ここでボールの最終的なy位置を決定します。
y=(-15)(3 and 1/3)+150
yはボールの最後のy位置であり、速度の15は負になり、時間は上からの跳ね返り後の時間です。画面の下部から開始しているため、bは150です。これをすばやく解決することで、y=100になっていることがわかります。
したがってx = 200
、パドルのx位置、またはx位置にいるとき、y位置は100になり、これがパドルでボールを打つことができる場所であることがわかります。
これがすべて正しいことを願って、寝る前にこれを早く終わらせようとします。私はあなたが持っているこれについてのこれ以上の質問に答えることができます。これはすべてあなたが理解するための数学と物理学にすぎません。あなたはこれをあなたが使用しようとしているどんな言語にも解釈する必要があるでしょう。