原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】Animation実行中にイベントを実行する

大雨

今年はやっぱり冷夏だったのか、夏休み期間が終わるのと同時ぐらいに「猛暑日」というワードも全く聞かれなくなって、どちらかと言えば「大雨」というワードがトレンドで賑う季節になっています。
私の住んでいる福岡では2日連続で大雨・洪水警戒レベル5を達成するという偉業を成し遂げて、しかも丁度帰宅の時間でピークを迎えるとか、もう帰れないかと思った、という貴重な経験を2日連続で味わう事ができました。ありがとうございます。もう二度と御免です。

 

さて・・・

前回、前々回の記事で紹介した通り、やっとSTGらしく弾を撃てるようなりました。

f:id:Karvan:20190903212917g:plain

 

未だ敵側の弾丸制御は未実装なんですが、やっぱり自機側だけでも弾を撃てると画面に派手さが加わりますね。

 

これで自機側の機能(武器)としては直線的に飛ぶ弾丸と、ロックオンターゲットに向かっての科学忍法『火の鳥』の二つになります。

 

ここで『火の鳥』って何?という方に説明すると、『火の鳥』言うのは下の動画のように、自機が敵に向かってKamikaze Attackする戦法の事を言います。
Kamikaze Attackの精神は最強なので、ゲーム内では最強の攻撃方法となる予定です。

 

f:id:Karvan:20190723234207g:plain

 

二つの攻撃方法を切り替えたい

攻撃方法が二つあるのですが、各それぞれで制御するモジュールは異なります。
弾丸の方は前述のようにJobSystem(Script)にて制御しますが、『火の鳥』の方はAnimation動作で自機の動きを制御しています。

 

この為、攻撃方法を切り替える際には互いに同期をとる必要があるのですが、Animationを使用してオブジェクトを動かす際には、開始時にトリガーを指定するだけで、その完了を待って次の動作を行いたい場合にはちょっとした工夫が必要なります。
(・・・っていうのが今回の記事の主旨)

 

Script側の設定

最初にアニメーション終了時に呼び出すコールバック関数を作成します。

ここで原則としてAnimation側からコールバックを受け取れるのは、Animatorと同じオブジェクトに付与されているScriptだけになります。Animatorが別オブジェクトのスクリプトに対してコールバック関数を呼び出すことはできません。

 

今回の場合は『火の鳥』のアニメ動作完了後にJobSystemへ弾丸発射の依頼をするだけなので、下記のように一行だけです。 

f:id:Karvan:20190903212404p:plain

 

 Animation側の設定

次にAnimation側でイベント発行(今回は完了時)のタイミングと、その時に呼び出すコールバック関数を指定します。

 

Animationウィンドウを開き、アニメーション終了時のKeyFrame上あたりで右クリックします。

 

f:id:Karvan:20190903213035p:plain

そうするとAdd AnimationEventという吹き出しが出てくるのでそれを選択します。

 

f:id:Karvan:20190903213134p:plain

選択後にInspectorウィンドウにAnimatorと同じオブジェクトに付与されているScriptのpublic関数が表示されるので、コールバック関数になるものを指定します。

 

f:id:Karvan:20190903213200p:plain

指定後はこんな感じになります。

 

実際の動き

これらの設定後に実際のゲーム上で動作確認した結果がコレです。

f:id:Karvan:20190903213249g:plain

 

次は敵側の弾丸制御かぁ・・・

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。