ちょっとすすんだマップ処理(偽NaGu-Ru開発日記) 99/12/05

昨日、マップエディタでオブジェクトをおけるようにしたので、
くにおくんや、Quakeの移動判定エンジンにちょっとでも近づくために、
「物体の上にのる」といういかした処理の実現に着手しました。
これができれば、移動判定エンジンでも前作NaGu-Ruを超えることになりますね(今までほぼ同じでした(^^;

さて「物体の上にのる」ということですが、これが結構面倒なんです。
実は前作「NaGu-Ru」でもこれをやってみようとしたんですが、あえなく玉砕(TT)
というわけで、今回は失敗するわけにはいかないんですよ。なんか悔しいでしょ?
やろうと思ってることができないって。ちゅーわけで、がんばってみましょうか。



で、実際プログラムを組むのに何をしなければならないかというと、
結局は「あたり判定」なんです。当たり前ですよね?
でも、そのほかにもいろいろとやることが発見されました。それは.....

  • あたり判定
  • 「自分の下にあるもの」の判別
  • 「自分の下にあるもの」からおっこちたときの処理
  • 「めりこみ」対策

などなど。他にもいろいろと細かいところがありまして、次にそれを見ていきましょう。
まずはあたり判定から。

とりあえず、XZ軸、つまり高さを考えない平面上でのあたり判定をします。
もちろん、あたり判定を行うべき全物体とあたり判定を行います。
ここで、移動判定と移動の関係についてですが、僕の経験からいくと、
移動させてから判定して、判定に引っかかったら位置を元に戻す、
という方法より、移動したあとの位置を使って移動あたり判定をおこない、判定に引っかからなかったら
移動する、という方法がいいと思います。なんとなくですが。

で、とりあえずこれで高さを考えない場合の移動判定は解決です。ほんとにこれで。
次は「高さ」を考慮したあたり判定をやってみます。基本的には先ほどと同じですが、
「自分の下に何か物体がある場合、XZ軸(平面)で判定が引っかかっても動ける」ようにしなければなりません。
だって、そうしないとものの上を歩けないもん。そうでしょ?
ちゅーわけで、先ほどのあたり判定を拡張してやれば良さそうですね。
というわけで、「自分の下にあるものの判定」が必要になってくるわけですよ。
ここでは「自分の下にあるものの判定」ができた、として話を進めます。

で、「自分の下にあるもののてっぺん」と「自分の足元」の高さが同じのときは、
先ほどのあたり判定に引っかかったときは進める、それ以外は「ものから落っこちる」
と判定するようにしましょう。これで、ものの上を歩くことが出来ます。

文章で書くとながったらし〜(^^;)簡潔にまとめれないもので、すいません。

というわけで、めでたく「もの上を歩く」ことができるようになりました。
しかし、「階段」とかはどうしようかな〜(^^;)




もどる