ゲーム制作⑮ 敵キャラスポーン制御
ステージ自動生成の続きです
敵キャラスポーンの制御
前回Edgerでステージを生成し、プレイヤーを移動できるようにしました
今回はcorgiの敵キャラをランダムスポーンさせてみます
デモを流用する場合、ポストプロセスオブジェクトのインスペクターにスポーンする敵を指定するフィールドがあるのでここに敵のプレハブを設置するだけです
これで目的のキャラを出現/攻撃等できるようになりました
別のキャラも
ただし、この方法だけで出現する敵を制御する場合、全種類均等にランダムにスポーンすることになります。
- エリート雑魚やレア雑魚のような出現確率の低い敵
- 特定の部屋だけに出現する敵(中ボス等)
を狙い通りスポーンさせることが出来ません
これを解決するには
1️⃣出現する敵グループを分けて設定し、敵グループ毎にスポーン確率を制御
2️⃣部屋名に応じて出現する敵グループを変える
ようにコードを拡張します。
なんやかんやして、実装できました(詳細は一応記事後半に載せてあります)
これで敵キャラのスポーンは大体制御できるようになったと思います
←レア敵
←中ボス
アセットから敵キャラモデルの追加
これまでの敵は全てcorgiのアセットに用意されているキャラでした
自前や、別アセットのキャラを追加したい時、corgi用に様々な設定する必要があります
今回はRPGMonsterというアセットの3Dキャラを追加したいと思います
このゴーレムのモデルです
corgiで動かすためにはいくらか設定が必要ですが、悪戦苦闘を経て、とりあえず歩き回らせることができました。(手順は記事末尾)
ただ、モデルを真横から表示してしまうと、せっかくの3Dモデルの立体感がなくなり魅力が半減してしまいます
そこでやや正面を向くように角度をずらして表示できるようにします
30度ぐらいずらすと良さそうです
→30度→
頭の悪そうな図を書いて角度を求めた結果、右から左を向く時は130度、逆は-130すれば良さそうなので、コードを拡張します。※120度
若干こちら向きになりモデルの立体感が分かりやすくなりました。
AIやアニメーション制御、攻撃判定等、まだまだ設定しなければならないことは多いですが、ひとまずアセットの3Dキャラを歩かせるまでの手順は理解できました
次回は、今述べた敵キャラの設定や、キャラのピクセル化を試したいと思います
~~~~~~~~~~~~~~~~~~~~~~
備忘録
EdgerProのMetroidvaniaデモを元にした敵のスポーンパターン変更方法
1️⃣敵グループの追加&スポーン確率変更方法
①MetroidvaniaPostProcessingTask : DungeonGeneratorPostProcessingGrid2Dに敵グループのゲームオブジェクト配列を追加
②ジェネレーターにフィールドが追加されるのでそこに追加したい敵キャラをアタッチ(ここではレア敵のこと)
③MetroidvaniaPostProcessingTaskのDoSpawnEnemies()でレア敵グループから低確率でスポーンするように変更
④指定したレア敵(まい敵_Retro~)がコードで指定した確率で出現するようになる
2️⃣部屋名に応じて出現する敵グループを変える方法(特定の部屋にしか出現しない敵、ボスキャラ等)
① ↑1️⃣の②まで同じ(ボスならボス敵グループを作りアタッチしておく)
②特定の敵しか出ない部屋のテンプレートを作り(※作り方は後述3️⃣)固有の名前を付けておく(ここでは"まいBossRoom")
③DoSpawnEnemies()で部屋の名前を条件に(部屋名に"まいBossRoom"を含むなら)特定の敵をスポーンするように変更
④特定の部屋にしか出ない敵がスポーンするようになる
3️⃣新たな部屋テンプレートの追加方法
①custom生成のtype定義.csを開き(Metroidvaniaroomtype.cs)、enumに部屋のタイプ("エリート","ボス"等)を追加
②MetroidvaniaRoomtemplateConfig.csを開き、 public GameObject[] エリートRoomTemplates;などを追加、GetRoomTemplates()にも対応するコードを追加
③画像のようにジェネレーターに追加した"◯◯RoomTemplates"フィールドが追加されている
④ボス部屋など作りたい部屋テンプレートを作成し↑の目的のフィールドにアタッチ
⑤グラフエディターで目的の位置に部屋を追加、Typeを先ほど追加したType("大ボス"など)にする
⑥これで作った部屋テンプレートが生成されるようになる
アセット(RPGMonster)のキャラモデルをcorgiで動くように追加する方法
①アセットのプレハブをとりあえずコピー(以下の"まいGolemPADefault"プレハブ)
シーンにドラッグドロップしてみると画面奥側を向いています
②このプレハブの親を2つ作りこのような構造にします
一番上の親オブジェクト(まいゴーレム)にCharacterコンポーネントを追加して下の「Autobuildaicharacter」を押してcorgiのキャラコンポーネントを追加します
③Characterコンポーネントのアニメーターに最初のプレハブ("まいゴーレムPA~")を、キャラモデルにその一つ上のGameObjectオブジェクトをアタッチ
(わざわざこうするのはキャラの回転を制御するためという理由がありますが、理屈が難しいため割愛)
④まいゴーレムプレハブで方向・位置調整
- y回転を90にして右を向かる
- Boxcolliderのサイズとオフセットを調整
- (Transformでx方向の微調整)
⑤CharacterコンポーネントでRotateModelOnDirectionをオン、その上をオフ
(前方というかプレイヤー側に少し角度を付けたい場合はチェックマークオン)
⑥動く