2013年1月29日火曜日

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


さて、前回記事に引き続いて、さっそく敵キャラ(NPCキャラクター)の衛兵がグルグルと何かを護衛している様子をコーディングしていく。

関連記事


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


November 22, 2012

巡回点(waypoint)の追加

ここで紹介するアイデアはシンプルなものでNPCキャラクターの移動に制限をかける。NPCキャラクターが移動出来る範囲をいくつかの地点に限定します。ビルの周りを巡回するだけの監視員を想像すると
いい。ビルの周りに4つの点を配置し、彼の仕事はそこの巡回だと伝え、AからB、BからC、CからD、最後にAに戻った後はAからBと再び続けてもらう。AIとしてベストでないが、この時点では賢いAIは必要ない。

それに加えて巡回点をマニュアル配置するため、もし高度の上下がある場合、地形の高さにあわせて配置する必要ごある。あとの動作はCCに任せるのみだ。
上図では巡回点AおよびBは異なる高さyにある。緑の線はCCが実際に移動するパス(経路)を表す。一定の重力を加えているのでCCがターゲットに向かいつつカーブの通りに移動する。

コードを見ていく前に、頭に入れておくべきこととして、短いグラフではこれで十分であるということだ。この例では巡回点は4つの配列だ。

巡回点には単純にタグをつけて GameObject.FindObjectsWithTag を使用することが可能だ。問題はUnityでは最初にどれが見つかるか、二番目に何が見つかるか保証されるロジックがないということだ。始めてから正しい順番が得られるように微調整するか、またはインスペクタで手動にて割り当てすることが可能だ。

オブジェクトのインスペクタで配列表示されるのでそこでスロットに差し込むのみだ。

手動割り当ての欠点は巡回点が何百とあると作業が煩雑になることだ。ここで別のチュートリアルで見ていくグラフが役立つところだ。ここではシンプルのままにしておこう。

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

見ていくと分かる通り、特にすごいテクニックを要するわけではない。NPCは常に往復を続けて、行動は極めて普通だが道行く歩行者としては十分だし、相互作用さえなければ問題ない。次のセクションではもうすこし生命力を足していく。
-----
次回は巡回パターンを変更してもっと動きを足していくぜ!

関連記事


0 件のコメント:

コメントを投稿

ブックマークに追加

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

自己紹介

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

ページビューの合計

過去7日間の人気投稿