いんでぃーづ

ゲームいろいろ、いろいろ自由

Unity : AnimationClipに合わせて処理をしたいなら

ジャンプに合わせて効果音をならしたり、足元に煙を出したい! 私はしたい。

そんなときに役立つのがアニメーションイベントです。

  • アニメーションイベントとは

アニメーションの途中のある地点で、スクリプトに設定した関数を呼び出せる機能です。 この動きのタイミングちょうどで処理したい! という場合にめっさ便利です。

モデルにスクリプトをアタッチしておく

下準備として、以下のようなスクリプトをモデルにつけておきます。

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

    void Start () {

    }

    void Update () {

    }

    void OnPlayerLand () {
        // 着地した!
    }
}

OnPlayerLandが今回呼び出す関数です。private 関数で問題ないです。

アニメーションを設定してAnimationウインドウを開く

こちらの記事を参考にしてくだされ。 また、アニメーションのリストの名前にRead Onlyとついていて編集できない場合、こちらの記事を参考にしてくだされ。

設定したいアニメーションの位置を探す

モデルを選択した状態でAnimationウインドウを見ると、モデルに設定してあるアニメーションがリストから選択できます。

ボタンを押すとアニメーションの動きが確認できます。

f:id:sugar_affordance:20160516201402g:plain

もう一度を押すと途中で停止します。 で1フレームずつ動かして、イベントを発生させたい位置を探しましょう。

f:id:sugar_affordance:20160516201417p:plain

をクリックしますと

f:id:sugar_affordance:20160516201427p:plain

こんな感じでマークがつきます。 このマークをクリックすると

f:id:sugar_affordance:20160516201429p:plain

こういうウインドウが出るので、リストから、最初に作成したスクリプトのOnPlayerLandを選択します。 これでイベントの準備は完了です。

動かしてみる

OnPlayerLandの中身を実装したら、Editorで実行してみましょう。

f:id:sugar_affordance:20160516201432g:plain

着地に合わせてまっくろくろすけみたいなのが出てきましたね。まあパーティクルなんですけど。 使えばこんな感じでアニメーションと処理の同期を取れます。


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。