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

black-and-white IT

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

スポンサーリンク

成果物

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

アニメの作成

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

ループ再生の解除

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

アニメの自動再生の解除

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

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

動線の確保

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

条件の設定

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

イベントの実行

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

コメント

モバイルバージョンを終了