あたり判定どうする


DirectXでの「R2000」開発も中盤を迎えた。
地面との接触判定やコースの壁との衝突判定という難問が、当然のごとく立ちはだかった。車のタイヤは、4輪とも全て路面を捉えていなければならない。
路面を構成するポリゴンはもちろんさまざまな大きさで、角度をもって並んでいる。1つのポリゴン内の任意の一点(タイヤと路面ポリゴンとの接触点)の絶対座標をどうやってはじき出すのか...途方にくれた。

そんな時、Direct 3D RM にはとても便利な関数があることをインターネット上で発見した。「RayPick」関数である。
路面ポリゴンを突き抜ける上から下への直線の始点、終点の引数等を指定し、RayPick関数へ投げてやれば、路面ポリゴンとそれを通過する直線との交点座標が取得できるではないか!!

「俄然やる気」である。タイヤ4つそれぞれに対し、路面との接触座標を割り出した。4つのタイヤが見事に路面に乗っている。ポリゴンが繋がったコース上をタイヤだけで走らせて見る。どんな起伏も4つのタイヤは滑らかに転がった。

それから、起伏のあるコース上に乗った4つのタイヤの高度にあわせて車体の傾きを計算し、ようやくタイヤの上に車体が乗った。感動した。

この勢いでコースの壁との衝突判定を済ませ、RayPickは使用しないものの、適車との衝突判定も無事に終了し、ゲームが完成した。

この時点での世の中のDirectXのバージョンは DirectX7a となっていた。

←戻る

Last Update 2001.09.07