上に戻る
まけ 目標点配置のコツ
概要みたいな
 目標点をうまく配置しないとCPUマシンがうまく走ってくれません。
 もう一度、各エリアに配置する「目標点」の役割についてまとめます。

・走行不能になったとき、復活するポイントを指定
  →目標点は、壁や穴で無い安定した場所におく必要があり
・CPUマシンは、現在居るエリアの目標点を目指して進む
  →そのエリアのどこに居ても、「目標点」を目指せば先に進めるように置かないとダメ
・逆走判定
・CPUマシンの投擲物の落下地点も決めるらしい……

じゃぁどうすんのよ?
 まず、間違っても設定するエリアの内部に置いたりしないように。
 そうすると、CPUマシンはそのエリアの中をぐるぐる回ることになります……
 1〜3つほど先のエリアの中にテキトーにセットすれば、大体は正しく動いてくれるはずです。
 ただ、本当にテキトーにセットすると、壁に当たったり、コースアウトしたりして、あまり速く走ってくれないかもしれません。

 例えば、下のようなマップ・エリアを考えます。
 上からやってきて、左折して、右に抜けていくコースです。
 エリアは00→01→02と、行くこととします。
(これだと、エリア配置があまり良くないのですが、まぁ例として。)
マップとエリアの例
 例えば、この位置にエリア00の目標点を置いたとします。
目標点の悪い例
 これでも、多分、エリア00→01と走ってくれるのですが、恐らく、壁に車体をぶつけながら走行するはずです。
 エリア00の右上のほうと、目標点を直線で結んだとき……
目標点の悪い例解説
 このように、ブロックをまたいでしまうのが原因です。
 ……エリア00の目標点は、この当たりが良いでしょう。
目標点の設置例
 これですと、
目標点の設置例解説
 このように、エリア00のどこに居ても、壁にぶつかったりせず、エリア01に向かってくれます。
 ただ、実際に矢印のように動くわけではなく、エリア01に入った瞬間、エリア01の目標点に向けて動き始めますのでご注意を。
 エリア01の目標点は、テキトーにおいても大丈夫そうです。先の状態に合わせて配置することになると思います。
エリア01はテキトーに……
 こんな風に、そのエリアから、目標点に向けて直線を引いたとき、間に障害物が無い状態が理想です。まぁそうできないこともあるとは思いますが……
実装面?
 「マップを配置できるグリッド」の2×2分を新たなグリッドとして決めます。
 それを「大グリッド」と呼ぶことにします。
 エリア配置の時に気づくと思いますが、エリアは「大グリッド」単位でしかおくことができません。
 その為、マップを微調整したりする必要が出てくるかもしれません。

 各「大グリッド」に対し、進む方向をあらかじめセットされます。
 CPUマシンは、それに角度をあわせるようにハンドルを切るようです。
 それを図で表したものが以下のものです。
コースの例
 このコースの場合、
進む方向のセット
 こういう感じです。(※エディタにはコレを見る機能はつけていません)
 ……なんかわかりにくいですが、それぞれ四角いおもりみたいなのがついた方向に進みます。

 で、この細かい矢印(に見えないけど)は、レースが始まる前にセットされます。
 セットは、どこかのエリアに属している、全ての「大グリッド」に対して角度計算を行うことで行われます。
 角度計算は、2点間の角度を計算することで行われます。
(atan2を取る……といえばわかる人にはわかると思いますが……)
 2点とは、
 「「大グリッド」の中心」
 と
 「「大グリッド」の所属するエリアの目標点」
 です。
 この矢印全てが次のエリアに向かうような配置が望まれます。
はんちんぐ?
 下の図を見てください。
2つの距離
 上は、目標点のを、すぐ次のエリアのギリギリの場所に置いたときのものです。
 下は、2つ先のエリアに、目標点においたときのものです。
 上の配置をしてしまいますと、少しずれただけで、CPUが急ハンドルを切るため、若干ふらついた走行をしてしまうかもしれません。
 直線なんかでは、下のようにやや離し気味に置くと良いかもしれません。
 いや、離しすぎても、何かの衝撃でダートに落ちたとき、なかなか戻ってこないといった問題が生じるのですが……
(今頃だけど、この細かい矢印を表示できるようにしてもよかったかなぁ?)
分岐
 オリジナルには分岐があります。
 コレは、エリア配置を工夫することで実装可能です。
分岐の例
 このような分岐を考えます。
 以下のようにエリアと、目標点を配置すればOKです。
分岐の実装例
 ちょうど、別れ始めるところで、エリアも2つにわけ、それぞれのコースを目標点にします。
 さらに、その一つ前のエリアは、次の2エリアの、間の辺りを目標点にします。
 これで、CPUが「偶然踏んづけた」エリアの方に向かって進むことになります。
 分岐している部分では、2分岐交互にエリア配置しないと順位判定がおかしくなるので注意です。
(一方の分岐のエリアだけを先に作ったりすると、
 そちらを走っているとなぜか一瞬順位が下がることになる。
 エリア番号で順位判断がなされているため。)
(38)2007年11月24日 プレさ兵衛
inserted by FC2 system