物理シミュレーション3

衝突のメカニズム

衝突のロジックは、どのゲームでも重要。
ピンボールブロック崩し、アクション、シューティング、…。

まずは接触点の検知

ボールがブロックにめり込んだ場合、半分戻った地点で判定を行う。
そこで接触していなかった場合、戻った距離の半分進む。
(めり込んでいた場合は、半分戻る)
この操作(半分戻る/半分進む)を繰り返し、接触点を求める。
ようは、2分木探索ですね…。

次に反射角度を求める

接触位置の物体の中心座標をPとする。
接触位置から物体を右回りに移動量/2、左回りに移動量/2進める(接触させた状態で)
それぞれの中心の座標をQ1、Q2とする。
PとQ1、PとQ2のなす角の2等分線が接触相手との法線となる。
入射角度から見て法線に線対称な角が、反射角度となる。

最後に衝突後の速度を求める

V'=e×V
e:跳ね返り係数(0〜1)
そのまんまですね…。