AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

NavMeshのエージェントに行列させる

f:id:yasu9780:20170119211621p:plain

予想外に難航しました。

前の人の後ろにならぶという処理で、途中の人が動いたら、それぞれに追従するってことで。
けっこう簡単にできるかなと思ったんですが、疲れました。
単純に並んでるわけではなく、ポイントにやってきた順番で整理券を発行して、
その番号順に並んでいます。

ステート的には、
gotoShop → waitShop

先頭
 店に着くと、整理券をもらって、自分が最後尾になる。自分以外のgotoShopステート者に自分の後ろにならぶように一斉送信。先頭なら、そのまま購入処理。買ったら整理券を返上して、次の人に先頭を譲る

それ以降の到着者
 店に着くと、整理券をもらって、最後尾の次になる。自分以外のgotoShopステート者に自分の後ろにならぶように一斉送信。前の人が先頭になり、抜けるまで着いていく。

先頭が抜けたときに次の人に情報が伝わらなかったり(教室に帰るので行列がついてく)
いつのまにか行列が尻尾を食う蛇のようになったり(くるくるまわる)
なんかバグだらけで頭が痛くなりました。
もっと簡単にできそうなんですけど
店に行く時点で、脳内予約をしてしまえば楽なんですが、店に着くまで、自分が何位か分からないもんで…



行列する人たち

昼休みに、購買部に行列してパンを買う処理を作るために行列処理を作りました。
昼休みになるとみんなダッシュして「焼きそばパン売り切れました」をやりたい。
ダッシュしてたら先生に怒られて、その生徒は歩行速度を遅くさせられて戦線離脱とか。
怒られると先生からの評価下がってもいいと思うし。
好きな相手に自分のパンをプレゼントする取り巻き集団ができても面白い。


他にもトイレ使用とか、限られたサービスリソースを多人数で共有するためには、行列はかかせませんね。
これに、人間が動かすプレイヤーも行列に並ぶことができるようにしたいです。
並ばないとパンは買えない!

ただ、整理券発行なら、後ろにぞろぞろついてくるのは変かもしれない。
かなり疲れた(´・ω・`)
無駄な経路を歩いてる感じですが、NavMeshの経路再探索をゴールについた時点で、やっているので、もっと頻繁にやれば無駄は減るでしょうけど。
ただ、障害物があるわけじゃないので、パスの数は少なそうですし、問題ないかも。今気づいた(´・ω・`)

壁があったら行列が曲がるというのも実現させたいと思います( ゚Д゚)



行列が壁まで来たら列が曲がるようになりました。
f:id:yasu9780:20170120001452p:plain
左右90度にまげてるから壁にそうわけじゃないけど。
とりあえずOKかな。


あとは先頭が順次抜けていく処理と、行列の途中の人を拉致ったら、次の人と前の人が接続されればいいですね。
普通に離れると後ろがついてくるので、一定距離離れるか、死ねば、その順位は無効になるって仕様にしましょう。