i-school - 3Dグラフィック 2D横スクロールアクション 手順8
 攻撃のアニメーションに合わせて弾を生成する機能を実装します。

<実装動画>
動画ファイルへのリンク



手順8 ー弾の生成機能の実装ー

<新しく学習する内容>




弾用のゲームオブジェクトを作成してプレファブにする


 どのような形状にするかを自由に設計して弾として作成してください。

 今回の例では、無料アセット内にあるパーティクルを元に、球状のゲームオブジェクトを作成しています。

Cartoon FX Free
https://assetstore.unity.com/packages/vfx/particle...


Sceneビュー画像



インスペクター画像



 プレファブ用のフォルダを作成してから、弾のゲームオブジェクトをプレファブにしておきましょう。


攻撃の処理にアニメーションイベントを利用する


 プレイヤーや敵が攻撃をした際に、アニメーションイベントという機能を使うことによって、
攻撃のアニメーションと連動して攻撃用のメソッドを呼び出すことが出来ます。

 こちらに詳しい記事があります。
赤兎ラボ様
Unity AnimationEventhttps
https://redrabbitnet.hatenablog.com/entry/2020/01/...
 


攻撃用のアニメーションのインポートを行う


 3Dモデルのアセットに攻撃用のアニメーションが用意されていない場合には、アセットストアから無料のアニメーション用のアセットを探してインポートしてください。
 以下は参考のアセットです。
Unity アセットストア
Warrior Pack Bundle 1 FREE
https://assetstore.unity.com/packages/3d/animation...





PlayerController クラスを修正する


 アニメーションイベントに登録するためのメソッドを新しく作成します。

 攻撃実行時と攻撃終了時の2つのタイミングで実行したいため、
それぞれ別のメソッドを用意しておいて、しかるべき処理を記述するようにします。

 アニメーションイベントにメソッドを登録することにより、今回であれば攻撃のアニメーションの動作の途中で
メソッドが実行されることになりますので、自分のイメージしているタイミングでエフェクトを生成したり、SE を鳴らしたりすることが実現できます。


PlayerController.cs

 <= クリックすると開きます


 スクリプトを修正したらセーブを行います。


Bullet スクリプトを作成する


 弾を制御するスクリプトを作成します。


Bullet.cs

<= クリックすると開きます



弾のプレファブに Bullet スクリプトをアタッチする


 プレファブになっている弾のゲームオブジェクトに Bullet スクリプトをアタッチしてください。


インスペクター画像


 これで生成された弾のゲームオブジェクトが制御されて移動(発射)されるようになります。


Attack スクリプトを作成する


 攻撃の処理とエフェクトの処理を制御するスクリプトを作成します。
PlayerController スクリプトとは別に用意する場合に利用します。

 処理が難しいため、中級者以上の方向けの実装例です。


Attack.cs

<= クリックすると開きます

アニメーションイベント用のメソッド


 アニメーションイベント用のメソッドはインスペクターより登録することになりますので、
メソッドのアクセス修飾子は public に設定してください。

    public void Hit() {


    }


アニメーションの Events にアニメーションイベントを設定する


 アニメーションイベントを設定したいアニメーションクリップを選択し、タブから Animation を選択します。

 インスペクター下部に Events という項目がありますので、そちらを選択するとアニメーションの再生時間が表示されますので
左端にある + ボタンを押すことで、指定した秒数の地点にアニメーションイベントを新規作成できます。

 作成したアニメーションイベントにはメソッドを登録することができますので、先ほど作成したメソッドの名前を文字列で登録します。
Animator コンポーネントがアタッチされているゲームオブジェクトと同じゲームオブジェクトにアタッチされているスクリプトのメソッドのみ実行対象となります。








ゲームを実行して動作を確認する


 実際に攻撃のボタンを押して、アニメーションが連動するか確認します。

 また、アニメーションの最中にアニメーションイベントに登録したメソッドが実行されて、
エフェクトが再生されることも確認しておきます。

<実装動画>
動画ファイルへのリンク


 Animator ビューでは、アニメーションの遷移が確認できますので、こちらも合わせてデバッグを行ってください。


<Animator ビュー>
動画ファイルへのリンク





 以上でこの手順は終了です。

 => 次は 手順9 ープレイヤーの移動方向と移動アニメの同期処理の実装ー です。