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

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

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

Unityアクションゲーム制作記 その18 ボスキャラのセットアップのメモ書き

youtu.be

  今回は、完全に自分のためのメモ書きです(他の人にはなーんの役にも立たない100%混じりっ気なしの駄文><)。先日、アリーナモードと称するゲームモードに新しいボスを追加する際に、どうすればいいかをすっかり忘れて、すげー苦労しました。その反省を込めてのメモ書きです。なにしろ数ヶ月前に作ったいい加減な仕様なものだからなぁ……。なお、アタッチするスクリプトなどの名称は、自分で勝手に作っているものがほとんどです。

1)オブジェクトのtagとLayerの設定

 ルートオブジェクトのtagとLayerをそれぞれ、tag>enemy、Layer>EnamyMainとする。

2)ルートオブジェクトにアタッチするコンポーネント

 おなじみのAnimator、Rigidbody、CapsuleCollider

 敵の制御ルーチンの「EnemyMainAi」スクリプト

 ボスであれば、ストレス管理用の「EnemyStressMain」スクリプト

3)ルートオブジェクトにアタッチするEnemyMainAiへ、エディタから入力しておく必要のある値(他はまだ覚えているから割愛)

●EnemyMainAi

 EnemyMainCollider:プレイヤーの武器と当たり判定を行うコライダー

>近接攻撃用

 EnemyWeaponRightObjectCnt:

 近接攻撃の右手武器で判定に必要な個数(片手なら1、両手なら2)

 EnemyWeaponRightObjectObj:

 近接攻撃の右手武器で判定されるオブジェクト(判定が必要な分だけセット)

 EnemyWeaponLeftObjectCnt:

 近接攻撃の左手武器で判定に必要な個数片手なら1、両手なら2)

 EnemyWeaponLeftObjectObj:

 近接攻撃の左手武器で判定されるオブジェクト(判定が必要な分だけセット)

>遠隔攻撃用

 それぞれ必要個数分登録しておく。

 RangeWeaponStartPosObj:遠隔武器発射場所のゲームオブジェクト

 RangeWeaponPrefab:実際に発射する遠隔武器のプレハブ

 RangeWeaponEffectPrefab:発射する時に生成するエフェクトのプレフハブ

 RangeWeaponSoundEffect:発射した時に鳴らすSEの名前

4)当たり判定用のコライダーとそこへアタッチするスクリプト

・プレイヤーの武器と敵本体の当たり判定を行うためのコライダー

Layer:EnemyCollider

場所:Bip01 Pelvis(敵本体の中央)

コライダーの種類:BoxCollider

アタッチするスクリプト:EnemyDamageCongrollAi

(プレイヤーから攻撃を受けたあとの行動を決めるメソッドを呼び出すためのもの)

・敵の武器とプレイヤーを判定するためのコライダー(右・左それぞれ設定する)

Layer:EnemyAttack

場所:敵の右・左手武器のある場所

コライダーの種類:CapsuleCollider

アタッチするスクリプト:EnemyWeaponRightAi(右)、EnemyWeaponLeftAi(左)

(敵の武器とプレイヤーの接触判定があったときに呼び出されるメソッド) 

5)攻撃アニメーションに必要なアニメーションイベント

>近接攻撃(右)

 EnemyWeaponColliderOn():武器(右)の判定をONにしたいタイミングで呼び出す

 EnemyWeaponColliderOff():武器(右)の判定をOFFにしたいタイミングで呼び出す

 EnemyAttackOff:敵の攻撃(右)動作終了フラグなどの設定

>近接攻撃(左)

 EnemyWeapon2ColliderOn():武器(左)の判定をONにしたいタイミングで呼び出す

 EnemyWeapon2ColliderOff():武器(左)の判定をOFFにしたいタイミングで呼び出す

 EnemyAttack2Off:敵の攻撃(左)動作終了フラグなどの設定

 >各種特殊メソッド

  モード変更、エフェクト実行などを行うためのメソッド群。

 EnemyReactionFalse():特殊攻撃中にBlow、KnockBackを無効とする

 EnemyReactionTrue():通常に戻す

 EnemyRigidbodyPositionFreezeAll():rigidbody全座標・回転固定

 EnemyRigidbodyPositionInit():rigidbody座標・回転固定を初期状態に戻す

 EnemySummonersCircle(召喚情報):雑魚敵の召喚用

 GroundEffectSet(エフェクト名):魔法詠唱などのエフェクトを発生させるために呼び出す

>遠隔攻撃 

 RangeAttackInstantiate():呼び出されると設定された情報をもとに、遠隔武器を実際に生成する

 うーん、、、こんなもんだっけな? まぁ、気付いたら追加しておこう。うん。