Unityで、任意のタイミングで一度だけアニメーションを実行する方法です。
成果物
![unity クリックアニメ](https://sunagitsune.com/wp-content/uploads/2021/12/2affcc0c1584c19581804bf30c0a32ad.gif)
例としてクリックでイベントを起こしていますが、キー操作や特定タイミングなどでも可能です。指定したイベントが走ると、アニメーションが都度一回だけ実行されます。
アニメの作成
![animation 1回 unity1](https://sunagitsune.com/wp-content/uploads/2021/12/fd96eada39eedb5214839c55ecbf9904.png)
元になるアニメを作っておきます。素材をまとめて選択してシーンビューに放り込み、
![animation 1回 unity2](https://sunagitsune.com/wp-content/uploads/2021/12/8281059b0d58c36be288e337b91a6ec8-650x102.png)
名前をつけて保存します。
![animation 1回 unity3](https://sunagitsune.com/wp-content/uploads/2021/12/665684bd19d4235646c6e42f89c5d74f.png)
animとcontorollerが自動生成され、画面上に新しくオブジェクトが配置されます。
![catanime](https://sunagitsune.com/wp-content/uploads/2021/12/catanime.gif)
作ったばかりのアニメーションはこのように、自動再生されかつループします。
これを指定のタイミングで実行、一度切り再生にしたいと思います。
これを指定のタイミングで実行、一度切り再生にしたいと思います。
ループ再生の解除
![loop animation1](https://sunagitsune.com/wp-content/uploads/2021/12/loop-animation1.png)
生成された三角形のほう(anim)をクリックし、
![loop animation2](https://sunagitsune.com/wp-content/uploads/2021/12/loop-animation2.png)
インスペクターで「ループ時間」のチェックを外します。
![lp](https://sunagitsune.com/wp-content/uploads/2021/12/lp.gif)
アニメーションのループ再生が解除されます。
アニメの自動再生の解除
![animator unity1](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity1.png)
資格のほう(controller)をダブルクリックし、
![animator unity2](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity2.png)
アニメータービューを開きます。
現在EntryからCat Animation(アニメーションの名前は任意)に矢印が伸びていますが、これはゲーム起動時にアニメを再生することを意味しています。
現在EntryからCat Animation(アニメーションの名前は任意)に矢印が伸びていますが、これはゲーム起動時にアニメを再生することを意味しています。
![animator unity3](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity3-650x254.png)
これを防ぐために、Entryから別の何かへ矢印をそらします。
アニメータービューの適当な位置で右クリック→ステートの作成→空をクリックします。
アニメータービューの適当な位置で右クリック→ステートの作成→空をクリックします。
![animator unity4](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity4.png)
空=特にイベントの起きない「ステート」が作成されました。
![animator unity5](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity5.png)
空のステートの上で右クリックし、レイヤーデフォルトステートとして設定するをクリックします。
![animator unity6](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity6.png)
すると、Entryから伸びる矢印が空のステートに接続されます。すなわち、
![animator unity7](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity7.png)
ゲームを起動してもアニメーションを自動で行わなくなります。
アニメーションのトリガーの作成
動線の確保
![animator unity10](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity10.png)
ゲーム起動後の初期位置が空のステートなので、矢印をそこから伸ばして条件達成時に「移動」します。
空のステートの上で右クリックし、遷移を作成をクリックします。
空のステートの上で右クリックし、遷移を作成をクリックします。
![animator unity11](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity11.png)
最初Entryからつながっていたアニメーションをクリックすると、矢印が空のステートからアニメーションまで伸びます。
![animator unity12](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity12.png)
アニメーションのほうでも右クリック→遷移を作成をクリックし、
![animator unity13](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity13.png)
空のステートに矢印を戻します。
条件の設定
![animator unity19](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity19.png)
パラメーター→+→Triggerをクリックします。
![animator unity20](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity20.png)
条件指定に使うトリガーが作成されるので、わかるように名前をつけておきます。
![animator unity14](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity14-650x320.png)
空→アニメ(アニメーションの起動)のほうの矢印をクリックすると、インスペクターが表示されるので、
![animator unity21](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity21.png)
Conditionsの+(リストに追加)でさっき作ったトリガーをセットしておきます。
![animator unity16](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity16.png)
戻るほうの矢印は、特に何もしないでOKです。
イベントの実行
![animator unity18](https://sunagitsune.com/wp-content/uploads/2021/12/animator-unity18.png)
アニメーションオブジェクトにスクリプトをアタッチします。今回はマウスクリックでアニメーションさせることにしたので、コライダーもセットしました。
//Unity C#
void OnMouseDown()
{
//「catAnim」は作ったトリガー名に変更
GetComponent<Animator>().SetTrigger("catAnim");
}
![unity クリックアニメ](https://sunagitsune.com/wp-content/uploads/2021/12/2affcc0c1584c19581804bf30c0a32ad.gif)
実行結果です。
アタッチしたオブジェクトのAnimatorコンポーネントを取得し、トリガーをONにすることでアニメーションを実行しています。
アタッチしたオブジェクトのAnimatorコンポーネントを取得し、トリガーをONにすることでアニメーションを実行しています。
![](https://sunagitsune.com/wp-content/uploads/2021/07/computer-1343393_1280-160x90.jpg)
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント