衝突についてのメモ
すごい基本からの自分用まとめ
「衝突判定」と「衝突応答」を分けて考える
衝突判定: オブジェクト同士が接触しているかどうか
衝突応答: 衝突判定の結果「真」が帰ってきたら、どのような挙動をするか
if (衝突判定()) { 衝突応答(); }
衝突判定
→ 「三角形」と「直線」で考える
三角形: 地形(床や壁などの静的ポリゴンメッシュ)
直線: 移動前の点と移動後の点(1フレーム間に移動があった場合:動的オブジェクトのバウンダリ頂点)
この2つが交差するかどうかで判定する。
動的オブジェクト同士の衝突ももちろん考える必要があるが、それは後回し。
衝突応答
動体オブジェクトが床や壁などの障害物に対して斜めに接触したとき、オブジェクトがどう「滑るか」or「反発するか」といった挙動の計算は、厳密な物理計算でもしない限り、ヒューリスティックでアドホックな手法にならざるを得ない。
すなわち、決まった方法は無いので、自分なりの方法を考えるしかない。(先人の力を借りつつ・・・。)