コーディングを練習するためにポンクローンを作成していますが、パドルを打ったときにボールの角度を変更できるようにすることに固執しています。
私の現在の実装には、ボールのdeltaXとdeltaYがあり、ゲームループとともに移動してボールを移動します。私のやり方では、パドルが動いているときにボールを打つと、パドルの方向に応じてdeltaYが増減しますが、これはゲームにとってまったく自然なことではありません。
誰かがこれを行うためのより良い方法を知っていますか?
最初に行うことは、deltaXとdeltaYをballAngleとdeltaSpeedに変更することです。そうすれば、長方形の座標系から極座標系に移動することになります。ボールの動きの性質(直線になり、各インパクトでラインの角度が変わる)により、これにより作業が容易になります。これからは、ballAngleを変更するだけで、ボールの方向を更新できます。
ただし、ボールを描画する関数を更新して、ボールを極座標から直交座標に戻し、画面に表示できるようにする必要があります。高校の三角法を少し使用すると、角度と速度に応じて画面位置のデルタを計算できます。
newPosition = oldPosition + movementVector
と:
movementVector.x = deltaSpeed*cos(ballAngle)
movementVector.y = deltaSpeed*sin(ballAngle)
もちろん、これらの方程式は、ボールの角度を測定するものに基づいて、いくつかの修正が必要になる場合があります。
これで、パドルとの衝突ごとにボールの角度を変更するには、ボールが接触するパドルの部分に応じてボールの角度をインクリメントまたはデクリメントするだけで済み、描画関数の計算でxとyの更新が処理されます。現実的に配置します。
これがお役に立てば幸いです。