ue/book/crs/02_boss.md
2025-02-09 03:28:27 +09:00

5.9 KiB

ボスを作る

敵(enemy)やボス(boss)には必要なものが多いです。動きや攻撃パターン、エフェクト、ステータスやドロップアイテム、ゲージ表示、BGMなどが必要になります。場合によっては演出も必要です。

bossは/Content/ControlRig/Characters/Mechを元に作ります。

注意

ここからはbattle systemのassetを購入したほうがいいかもしれません。できれば評価が高くsale中のものを選びましょう。ほとんどこれ一つでゲームが作れてしまうので、多くの開発者はこのジャンルのassetを改造してゲームを作っています。スタイリッシュアクションの動きを見るとわかります。

https://www.fab.com/category/game-template/rpg

動きを作る

まずABPを作成し、基本的なAnimGraphを作成します。

projectにはsampleのABPがあるはずですからAnimGraphにidle, jump, runなどが揃っているをcopyします。

ここではAnimGraph -> Locomotion -> Idleを編集します。

動きはABPのLook Atが使えます。boneを指定するとPlayerに追従します。

[Mech_Idle] --> [Look At](Bone to Modify:cannon_01) --> Output Animation Pose

攻撃を作る

私は最初に購入したassetのspace frontier stations & shipsを使いました。なお、購入はおすすめしません。長いので以降はspace stationとします。

ここからはassetの解説になります。しかし、基本的な考え方については変わりません。まずは考え方を紹介します。

  1. ターゲットをロック
  2. ダメージ処理

ターゲット(target)をロック(lock)できるようなシステムは大抵、攻撃頻度やダメージ、コリジョンなど基本設定ができるようになっています。epic gamesが提供するassetや無料のassetでも同じです。そういった物を見つけてbossのBPに組み込みます。

ただし、ダメージ処理、例えば、HP管理や倒された時の処理は自分で書く必要があるかもしれません。

最初に触ったassetが影響を与える

ここからは少し昔の話をします。基本的には読み飛ばしてください。

私はueで最初に触り始めたのがこのasset(space station)でした。当時は何もわからずに手探りで自分のモデルを表示して遊んでいました。宇宙空間に自分のモデルを表示したときは本当に嬉しくて感動しました。

当時はsuperhero flight animationsという空を飛ぶためassetも購入して同時に使っていましたが、今でもその影響は残っています。

その人のゲーム作りは最初に触ったassetが強く影響を与えるのだと思います。これはgame engineも同じです。

space stationの基本構造

  1. /Content/SpaceStation/Blueprints/Weaponsで各武器のタイプを選べます。ここではBP_TurretGatlingを開きます。
  2. /Content/SpaceStation/Blueprints/Weapons/BP_TurretGatling(Self)の詳細からWeapon -> Shooting Delay:1にしてTurret -> Turret Aiming Speed:150にします。これは発射速度とターゲットに合わせる速度の設定です。
  3. /Content/SpaceStation/Blueprints/Weapons/Parent/DT_WeaponTypesを開きます。ここで弾丸の音(sound)やエフェクト(effect)を設定します。
  4. 最後に/Content/Blueprints/CBP_SandboxCharacter(Self)の詳細でactor(アクタ) -> Tags[0] -> Allow Shooting, Tags[1] -> ShootingTargetを追加します。これでPlayerがターゲットにロックされるようになります。
  5. あとは/Content/SpaceStation/Blueprints/Weapons/BP_TurretGatlingをmapに置いてください。

ダメージ処理

damage(ダメージ)の処理を書きます。

/Content/Blueprints/CBP_SandboxCharacterEvent Any Damageを追加します。これでdamageを受けますが、hpを用意してそれが0になったときゲームオーバー(gameover)する処理を書いたりします。

これはGame Ability System(GAS)を使うと便利です。

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/gameplay-ability-system-for-unreal-engine

HPゲージの表示

widgetProgressBarを作ります。まずBP_Mechにbox collisionを入れて、そこに入るとboss activeになります。trueならwidgetを表示する仕組みです。

ProgressBarは0.0 -> 1.0なので注意してください。HP_CurrentからHP_Maxを割り算します。

撃破処理

bossを撃破するまでの処理を書きます。

damageを受けて0になると消滅し、ドロップアイテムを落とします。消滅時はniagaraでeffectを再生します。damageを受けたときも同じです。

ドロップアイテムはnice interaction systemというassetを使用しています。これはEを押すとアイテム(item)が取得できるものです。