私はPongゲームの作成に取り組んでいますが、問題が発生しました。
線から点を跳ね返す方法を見つけようとしています。
これを行うために私が理解できる最善の方法は
- ボールの現在と将来の位置を計算します。
- 線分:{Ball.location、Ball.location + Ball.direction}(Ball.locationおよびBall.directionはカスタムベクトル/座標クラスを使用します)
- 生成された線分が壁またはパドルのいずれかと交差するかどうかを計算します。
- ??? これを行う方法はまだわかりません(別の質問で質問します)
- 見つかった最初の交差点で
- ボールをラインから跳ね返らせる
- で形成された三角形を作成します
- a=ボールの現在の位置
- b=線の交点。
- c=ライン上のボールの現在の位置に最も近いポイント。
- ボールがラインに当たる角度を見つけます
- 角度=cos(distance(b、c)/ distance(a、b))
- ボールの方向を回転させる角度を見つけます
- (90度)* 2
- ボールの方向を回転させて、新しい位置に移動します
- 今のところラインに到達するために移動した距離を無視すると、正確にライン上にある必要はありません
- で形成された三角形を作成します
- ボールをラインから跳ね返らせる
- それ以外の場合、交差点がない場合
- ボールを新しい位置に移動します。
これは許容できる方法ですか、それとも何かが足りませんか?