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の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント