読者です 読者をやめる 読者になる 読者になる

エディトリアルデザイナーのアプリ制作日記

Unityで遊ぶ個人開発者のメモ書き

Unityアクションゲーム制作記 その7 操作系の調整&敵ロジックの組み込み

 ここのところは、敵をザクザクぶっ倒していく気持ちのいいアクションをストレスなく実現する操作性、そして倒される敵のバリエーションを追加すべく地道な作業をしていました。

youtu.be

 操作性に関しては、連打系のコンボとタメ打ち系のコンボの2つをストレスなく使い分けれるようにすることを目指しました。最初よりはずいぶんと良くなったので、ひとまず操作系はこれでいったん終了。なにかもっといい方法が思いついたら改良したいところ。

 敵は、ある一定の条件で行動を繰り返すという、簡単なロジックを実現できるようなものを目指してみました。ただ、バリエーションを作りたいので、なるべくならその行動を繰り替えす条件を個別にカスタマイズできるようにしたい。でも、いちいち敵ごとにスクリプトを書くのはどうにもきつそう。どうしよっかなーと、考えた末に……

1)敵はいくつか設定された基本行動を繰り返す

  行動時間や設定目標を達成したら次の行動へ移行するようにする

 ・敵が取りうる基本行動

  待機・索敵・移動・回避など

2)基本行動中に割り込み行動が起きたら、その割り込み行動に応じた行動へ移るようにする

 ・基本行動中に反応すべき割り込み行動

  行動終了、プレイヤーから攻撃を受けた、プレイヤーを見つけた(見失った)、

  攻撃範囲に入った(出た)、目的の場所へ移動したなど

 こんな感じで敵本体のスクリプトに基本行動を実行するメソッド群をまとめて実装することで、スクリプトを使い回し出来るようにしました。で、個別のロジックを別ファイルに記述すれば、そこそこの手間でザコ敵は回せるかなーと。とりあえず近接系の敵(片手、両手攻撃)、遠隔武器系の敵を1つ作ってみたところ、そこそこ量産できそうな感触でした。

 もちろん、決められた行動をトレースしているだけなので、障害物があれば引っかかるし、敵同士で押し合いへし合いのダンゴ状態にもすぐなったりします。要は敵自身の周りの状況判断ができていなかったりしている状態です。これはまぁ、現状どうやればいいのかまったく見えてないので、他のことを実装しつつ勉強していきます。

 ちなみに、今回、口果音として「夏恋 karen〜」で声をお願いした櫻庭彩華さんにお手伝いいただきました。声に負けないように中身も頑張らなくては。うん。