FC2ブログ
    11 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 01

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】アニメーションの途中に処理を追加する方法とか。もう今年おわっちゃうよね。。。 

    12月になってしまいました。
    残り1か月もしないで今年が終わってしまいます。
    どうしましょう!坂内っす。

    本日はUnityの話題。

    アニメーション中にプログラムを呼びたい!
    そんな時はどうするか。

    例えば、こんなアニメーションがあったとします。



    これだと寂しいので、エフェクトが出るようにしましょう。

    いくつか方法があると思いますが、その中の2つの方法をご紹介。
    (まだまだいい方法はあると思いますが)

    ①攻撃のアニメーションを呼んだタイミングからコルーチン等で時間指定する。
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class AnimationTest : MonoBehaviour {

    public Animator anime;
    public ParticleSystem particle;

    public void OnClick() {
    StartCoroutine(Attack());
    }

    IEnumerator Attack() {
    anime.SetTrigger("Attack");
    yield return new WaitForSeconds(0.2f);
    particle.Play();
    }
    }

    yield return new WaitForSeconds()を使ってエフェクトをPlayするって方法です。
    ボタンを押して、0.2秒後にパーティクルをPlayします。
    コルーチンじゃなくても、Invokeでも可。



    こんな感じになります。

    ②アニメーションにアニメーションイベントを追加する方法。
    アニメーションのオブジェクトにこんなスクリプトを追加。
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class CharaTest : MonoBehaviour {

    public ParticleSystem particle;

    public void PlayEffect() {
    particle.Play();
    }
    }


    アニメーションの処理を行いたいところを右クリックし、「Add Animation Event」を選択。
    上記PlayEffectメソッドを選択します。




    これで、①と同じ動きができますよ。

    この方法だと、アニメーションのどこで処理を行うかを簡単に設定できるメリットはあります。
    ※ただし、呼ばれ先のメソッドがどこから呼ばれているかというのが分からなくなるデメリットもあるので、その際には呼ばれ先メソッドのコメントに「〇〇アニメーションEventから呼ばれる」的なことを書いておくといいかもしれません。

    という感じで、アニメーションに処理を付ける方法でしたー!

    ではあでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0