2013年1月29日火曜日

Unityで初めてのAIキャラクター(3.巡回パターンの追加)


さて、前回記事に引き続いて、今度は敵キャラ(NPCキャラクター)の衛兵が止まったり、周りを見渡したりする。

関連記事


では例のごとく、Unity Gemsからの翻訳をどうぞ!


November 22, 2012

巡回パターンの追加


前述の文章までにNPCキャラクターに巡回させる指令を実現してきた。さらに間で別のアクションを行うようにしれすることが出来る。AからB、BからC、と盲目的に移動させる代わりに(また繰り返しの動きかいなとユーザに思われる)、AからBへと移動し、そこで見回す動きをさせて、それから次の動きをさせることが出来る。次にDに着いたときに180度回転してまた180度戻ってさらにAに向かわせる。

NPCキャラクターの動作はあなたがどういう設計にするかに依存する。もしベンチが途中にあるならばわずかな間にNPCキャラクターに座らせてからまた動作を続けることも出来る。やりたければムーンウォークさせても良いし、これはあなたの想像次第だ(ゲーム全体の見栄えによる)。まあ、ムーンウォークはシリアスなゾンビゲームやコールオブデューティみたいなゲームでは酷いセンスになるので当然やめてもらいたい。

次に準備してもらいたいのは適切なタイミングにコールしたい関数のことだ。まずはFSMをみてみる。


前述の通り、普通の動きであり、ちょっとづつ工夫を凝らしてる感じだ。キャラクターは動くし、巡回点に到達して、どの地点にいるかによりアクションを開始させる。巡回点の2および3では何も行わない。

アクションはシンプルな回転、停止、戻る回転のアニメーションであり、代わりに好きなアニメーションを使用してもかまわないし、好きなステート(状態)を使用してもかまわない。待機のステート(状態)はアイドル状態のアニメーションで2秒間待機するIEnumerator関数となる。

次にコードを見ていく:

巡回パターンの短いコード(クリックして展開)

これでいくつかのboolean変数があり、キャラクターの状態を確認出来る。歩行、待機、回転のいずれかを行っている。updateにより各々のbooleanをチェックし、適切な関数がコールされる。Walk関数によりどの巡回点に到達しているかチェックしたうえで各々のbooleanを巡回点に基づいて定義する。残りはシンプルなコードなので見るだけで分かるはずだ。

この種のゲームは良く見かけるはずで、例えば入り口の衛兵がドアの前を前後に動き回り、たまに停止して周りを見回すか、停止をトリガーにしてオリジナルのアクションを行う。

0 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿