Unityで1回だけアニメーションを再生する方法

black-and-white IT

Unityで、任意のタイミングで一度だけアニメーションを実行する方法です。

スポンサーリンク

成果物

unity クリックアニメ
例としてクリックでイベントを起こしていますが、キー操作や特定タイミングなどでも可能です。指定したイベントが走ると、アニメーションが都度一回だけ実行されます。

アニメの作成

animation 1回 unity1
元になるアニメを作っておきます。素材をまとめて選択してシーンビューに放り込み、
animation 1回 unity2
名前をつけて保存します。
animation 1回 unity3
animとcontorollerが自動生成され、画面上に新しくオブジェクトが配置されます。
catanime
作ったばかりのアニメーションはこのように、自動再生されかつループします。
これを指定のタイミングで実行、一度切り再生にしたいと思います。

ループ再生の解除

loop animation1
生成された三角形のほう(anim)をクリックし、
loop animation2
インスペクターで「ループ時間」のチェックを外します。
lp
アニメーションのループ再生が解除されます。

アニメの自動再生の解除

animator unity1
資格のほう(controller)をダブルクリックし、
animator unity2
アニメータービューを開きます。
現在EntryからCat Animation(アニメーションの名前は任意)に矢印が伸びていますが、これはゲーム起動時にアニメを再生することを意味しています。
animator unity3
これを防ぐために、Entryから別の何かへ矢印をそらします。
アニメータービューの適当な位置で右クリック→ステートの作成をクリックします。
animator unity4
空=特にイベントの起きない「ステート」が作成されました。
animator unity5
空のステートの上で右クリックし、レイヤーデフォルトステートとして設定するをクリックします。
animator unity6
すると、Entryから伸びる矢印が空のステートに接続されます。すなわち、
animator unity7
ゲームを起動してもアニメーションを自動で行わなくなります。

アニメーションのトリガーの作成

動線の確保

animator unity10
ゲーム起動後の初期位置が空のステートなので、矢印をそこから伸ばして条件達成時に「移動」します。
空のステートの上で右クリックし、遷移を作成をクリックします。
animator unity11
最初Entryからつながっていたアニメーションをクリックすると、矢印が空のステートからアニメーションまで伸びます。
animator unity12
アニメーションのほうでも右クリック→遷移を作成をクリックし、
animator unity13
空のステートに矢印を戻します。

条件の設定

animator unity19
パラメーターTriggerをクリックします。
animator unity20
条件指定に使うトリガーが作成されるので、わかるように名前をつけておきます。
animator unity14
空→アニメ(アニメーションの起動)のほうの矢印をクリックすると、インスペクターが表示されるので、
animator unity21
Conditions+(リストに追加)でさっき作ったトリガーをセットしておきます。
animator unity16
戻るほうの矢印は、特に何もしないでOKです。

イベントの実行

animator unity18
アニメーションオブジェクトにスクリプトをアタッチします。今回はマウスクリックでアニメーションさせることにしたので、コライダーもセットしました。
//Unity C#
    void OnMouseDown()
    {
    //「catAnim」は作ったトリガー名に変更
        GetComponent<Animator>().SetTrigger("catAnim");
    }
unity クリックアニメ
実行結果です。
アタッチしたオブジェクトのAnimatorコンポーネントを取得し、トリガーをONにすることでアニメーションを実行しています。
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。

コメント