ゲーム作りの合間に息抜きのゲーム作り パート6
ただいま製作中のゲーム! UnrealEngine4で『暁の航路』制作中(メインプログラマー:GAISUTO) Unityで『(タイトル未定)』制作中(メインプログラマー:ざわわ) UnrealEngine4で『大旗取合戦(仮タイトル)』(息抜き&学習用)
本職に影響がでないように製作するので結構スローペースになります。 原稿の合間に落書きを描いて、ゲーム作りの合間に息抜きでゲームを作って、仕事の合間はゲームをして息抜き。
——–先日!——– ぷちコン制作、UE4勉強会、アンリアルフェスなどなど大忙しの日々を過ごしてました。 やっと落ち着いて開発できる。平日は3Dモデリングばっかりで、UE4ももっと触りたい。
さて、大旗取合戦の仲間や敵NPCのAIを作りはじめました。 今回作成したのはこちら、全体探索型近く狙い
NPCキャラのBP 頭の上のアイコンのマテリアルインスタンスを作って、キャラのCapseleComponentのタグの0番目に青チームか赤チームの文字をいれているのでチーム分け。 頭の上のアイコンの色がここで変化します。
チームの色情報をNPC_AIControllerに送る。
ここからNPCのAI チームの色を保持して、Flagクラスを全部取得して全部見ていく。 2回目に呼び出されたとき、TargetFlagを持ってると困るので、ここで初期化。 これで空っぽにしてくれてるみたいなんだけど、こういう使い方って大丈夫なのかな。
TargetFlagが空なのでIsNotValidから出てきます。
マクロの中で、Flagが自分のチーム以外のものだったらこのFlagをそのままTargetFlagにします。
TargetFlagを1つ確保している状態で、他のFlagを見ていきます。 自身から一番近いFlagをターゲットにするようにTargetFlagを置き換えていきます。 GetDistanceToの上側で自身と他のFlagの距離を、下側で自身と確保しているFlagの距離を取得して、小さい方(近い方)をObjectで取得。 Flagにキャストして、TargetFlagにします。
全部のフラグを見終えて、TargetFlagがあったらそこに向かう。 無かったら3秒まってもう1回調べます。
このAIの問題点 ・旗の中にいるときに他の旗に変化すると一旦旗の外にでてから触らないといけない。 自分がいる位置が他のチームの旗なので取ろうとして動かなくなる。