初めまして僕ロギーくんだロギ~


捨て置いて、こんばんは、アカテツ科です。 

めっちゃ突然ですが人工知能(AI)あるじゃないですか、最短経路を求めたりするアレです

HAL_9000とかSiriとかそういうのです

その内の一部として、LOS追跡やBoidsってのがあるんです 

オライリーの「ゲーム開発者のためのAI入門」なる本の序盤を読んでてよさ気だったのでUnityで シミュレーションすることに挑戦しました。以下がその道程です。



◆LOS追跡
LOS追跡とは、要するにただの追跡である。
まずそれっぽい物体を用意
この船的な物体にRigidbody2Dを付け、物理動作を実現。
船的な物体は、直進するための推進力と、曲がるための操舵力のみを持っている。(任意の方向に力をかけることが出来ない。)
boatc
この場合、追跡したい物体を向くように操舵力をかけ、距離に比例するような感じで直進すれば良いだけ。
以上、色々と調整したら、こうなった。

los
お~ちゃんと追いかけている。かわいい。






◆Boids(フロッキングアルゴリズム)
渡り鳥は集団で飛んでいる。そして集団で一斉に向きを変える。そんな集団の動きをシミュレーションするのがBoidsである。

3つの規則がある。

1・結合: 各ユニットを隣接ユニットの平均位置に向かって誘導する。
2・整列: 各ユニットの向きが隣接ユニットの平均的な向きになるように誘導する。
3・分離: 各ユニットが隣接ユニットのと衝突しないように誘導する。 

先ずそれっぽい物体を用意
この船的な物体にRigidbody2Dを付け、物理動作を実現。
この船的な物体は、直進するための推進力と、曲がるための操舵力のみを持っている。(任意の方向に力をかけることが出来ない。)
hune
船には視界がある。(図の赤斜線の部分) 

この範囲内に入った物体の位置と速度を調べて平均値を出した後視界内物体の数で割って平均の位置と向き情報を入手する。その向きと位置に行くように推進力と操舵力をかければ結合と整列ができているはず。
分離、これは船的な物体に近付き過ぎたら遠ざかるような操舵力をかけることで可能らしい。
以上、色々と調整したらこうなった。
無題
お~集団行動してる。かわいい。


 プレイヤーが赤い物体を動かしている。他の全ての物体は赤いのを先頭とした集団についていっている形となる。結合と整列はできていると思われる。しかし、

ray2
 
この密集率!「分離」が上手く行ってない! AIの難しさを感じさせられた。





でも眺めていると、スイミー的な何かを感じますね。かわいいと思います。 

BoidsはUnityGameUploaderにアップしたので実際にやってみて楽しんでください。
http://unitygameuploader.jpn.org/game/4383.html 

新歓展示でも展示します。新歓展示は4月8日と4月10日S516にて! じゃんけんに勝ち続けるゲームもよろしくお願いします。



( ͡° ͜ʖ ͡°)AIを感じていただければ

( ͡° ͜ʖ ͡°)幸いです。 




ご清聴ありがとうございました。 



次回は何スターのアルゴリズムなんだ、、、、