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

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

元になるアニメを作っておきます。素材をまとめて選択してシーンビューに放り込み、

名前をつけて保存します。

animとcontorollerが自動生成され、画面上に新しくオブジェクトが配置されます。

作ったばかりのアニメーションはこのように、自動再生されかつループします。
これを指定のタイミングで実行、一度切り再生にしたいと思います。
これを指定のタイミングで実行、一度切り再生にしたいと思います。
ループ再生の解除

生成された三角形のほう(anim)をクリックし、

インスペクターで「ループ時間」のチェックを外します。

アニメーションのループ再生が解除されます。
アニメの自動再生の解除

資格のほう(controller)をダブルクリックし、

アニメータービューを開きます。
現在EntryからCat Animation(アニメーションの名前は任意)に矢印が伸びていますが、これはゲーム起動時にアニメを再生することを意味しています。
現在EntryからCat Animation(アニメーションの名前は任意)に矢印が伸びていますが、これはゲーム起動時にアニメを再生することを意味しています。

これを防ぐために、Entryから別の何かへ矢印をそらします。
アニメータービューの適当な位置で右クリック→ステートの作成→空をクリックします。
アニメータービューの適当な位置で右クリック→ステートの作成→空をクリックします。

空=特にイベントの起きない「ステート」が作成されました。

空のステートの上で右クリックし、レイヤーデフォルトステートとして設定するをクリックします。

すると、Entryから伸びる矢印が空のステートに接続されます。すなわち、

ゲームを起動してもアニメーションを自動で行わなくなります。
アニメーションのトリガーの作成
動線の確保

ゲーム起動後の初期位置が空のステートなので、矢印をそこから伸ばして条件達成時に「移動」します。
空のステートの上で右クリックし、遷移を作成をクリックします。
空のステートの上で右クリックし、遷移を作成をクリックします。

最初Entryからつながっていたアニメーションをクリックすると、矢印が空のステートからアニメーションまで伸びます。

アニメーションのほうでも右クリック→遷移を作成をクリックし、

空のステートに矢印を戻します。
条件の設定

パラメーター→+→Triggerをクリックします。

条件指定に使うトリガーが作成されるので、わかるように名前をつけておきます。

空→アニメ(アニメーションの起動)のほうの矢印をクリックすると、インスペクターが表示されるので、

Conditionsの+(リストに追加)でさっき作ったトリガーをセットしておきます。

戻るほうの矢印は、特に何もしないでOKです。
イベントの実行

アニメーションオブジェクトにスクリプトをアタッチします。今回はマウスクリックでアニメーションさせることにしたので、コライダーもセットしました。
//Unity C#
void OnMouseDown()
{
//「catAnim」は作ったトリガー名に変更
GetComponent<Animator>().SetTrigger("catAnim");
}

実行結果です。
アタッチしたオブジェクトのAnimatorコンポーネントを取得し、トリガーをONにすることでアニメーションを実行しています。
アタッチしたオブジェクトのAnimatorコンポーネントを取得し、トリガーをONにすることでアニメーションを実行しています。

やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント