1[VRChat]初学者向けAnimatorの使い方UnityAnimatorVRChatはじめにスクリプトが使用できないVRChatでギミックを作る際にAnimatorが重要となってくるのでVRChatでの使用を目的としたAnimatorの使い方についてまとめることにしました。初学者を対象としてギミック作成に必要な基本的な部分をメインで書いていきます。内容量が多いですが、大事なポイントは太字で強調しているのでそこを中心に見ていただけるといいかと思います。アニメーションシステムをコントロールするためのインターフェースです。(Unity公式マニュアルより)簡単にいればUnityでアニメーションを管理するものです。似たものにAnimationコンポーネントもありますが、これは旧アニメーションシステムとして現在では非推奨になっています。VRChatでもアバターでは2018.3.2バージョンからレガシーアニメーションが廃止され、使えなくなりました。・間はカスタムトリガーでつないでいる。以上を組み合わせた、数を加算し別の進数で表示できる。Controllerを使って複数のAnimationを管理します。ControllerではAnimationの切り替えの順番や切り換える条件など様々な設定ができます。各Animationでオブジェクトの状態(主にパラメータの値)を表現し、トリガーでAnimationを切り替えていくことでオブジェクトの状態を変化させるといったイメージです。Animation1ではCubeオブジェクトが横向きに回転してるとします。それがプレイヤーのある行動(OnInteractなど)がトリガーとなってAnimation2に切り替わると縦向きに回転するようになるというように特定のトリガーによってCubeオブジェクトの状態を変化させることができます。ControllerでAnimationの切り替えを行う際などに使うパラメータです。トリガー(Trigger)の4つの種類があります。AnimatorControllerでAnimation間に「このパラメータが4.5より大きくなったら」や「このパラメータがtrueになったら」というような条件を事前に設定しておいて、パラメータを変化させて条件が満たされればAnimationが切り替わります。Controllerは.controllerという拡張子のファイルで管理され,Projectタブで「右クリック>Create>AnimatorController」やAnimationファイルをHierarchyのオブジェクトのD&Dすることなどで作ることができます。編集はAnimatorウィンドウでおこないます。上部のメニューからWindow>Animatorでウィンドウを表示できますまた、各AnimationはAnimatorウィンドウにD&Dすることで追加されます。その際にそのAnimationに対応したオレンジや灰色の四角が出てきます。TransitionsとConditionsAnimatorでAnimationの切り替えをおこなうときの設定に必要な項目の一部です。Animation間をつなぐ矢印を選択すると以下の図のようにInspectorに表示されます。Animatorで設定していくために重要なTransitionsとCondirionsについて説明します。TransitionsどのAnimationからどのAnimationに切り換えるかを設定しますAnimatorウィンドウの中でAnimation間に引かれている矢印1つにつきこれが1項目存在します。(上図では矢印を1つ設定したので項目が1つ表示されています。)矢印は切り替え前のAnimationに対応するオレンジや灰色の四角を右クリックしてMakeTransitionを選択することで出てきます。そのあと、切り替え後のAnimationに対応するオレンジや灰色の四角をクリックすると矢印で繋がれます。同じAnimation間に複数の矢印を引くと以下の図のようになります。(下図ではAnimation1からAnimation2に向かった矢印を2つ設定しました)矢印1つにつきConditionsで切り替える条件を設定できます。どれかの矢印の条件が満たされた場合に切り替わるので複数矢印を設定してORのように設定するときに使えます。Animation1からAnimation2に向かう矢印を2つ設定した場合Transitionsは2項目になります。項目(矢印)ごとに条件を設定でき、それぞれの項目を選択するとConditionsの表示が項目に対応した条件に切り替わります。Animation1からAnimation2に切り替わりますConditionsAnimationを切り替える条件を設定します。その矢印の方向に切り替わるときに設定する条件1つにつき1項目存在します(上図では条件を1つだけ設定しています)+を押すことで条件を増やすことができ、Conditionsに条件が複数設定されている場合、その分だけ項目が表示されます(下図では条件を2つ設定して2つ項目が表示されています)すべての条件が満たされた場合に切り替わるのでANDのように設定するときに使えます。Timeチェックをいれると条件が満たされても実行中のAnimationが終わる(最後のフレームにいく)まで切り替わるのを待ちますConditionsに条件を設定する場合には基本的にチェックを外しておいていいと思いますワールドで使うVRCSDKに含まれるVRC_TriggerコンポーネントからAnimatorに対して以下のようなActionをおこなえます。各Actionで追加できますどのActionもこんな感じの設定項目です。Variableに設定したParameterに対して計算するときに使う値を設定しますAnimationBoolAnimationBoolはAnimationStateの管理に真偽値(True/False(0/1のほうが分かりやすいかも))を使う方式です。閉まっている状態をfalse)AnimationFloatAnimationFloatはAnimationStateの管理に実数型(0.0とか0.5とか2.3とか)を使う方式です。Receiversに設定されたAnimatorのfloatというParameterにValueの値を入力します単純に状態管理として使う場合は同じことがAnimationIntやAnimationBoolでできるため、そちらを使ったほうがいいです。限定的にfloatのパラメータを用いることでComponentの値を動的に変化させられるのでそれを利用したスライダーがつくられています(TPCスライダー改)AnimationInt系AnimationIntはAnimationStateの管理に整数型(0とか2とか10とか)を使う方式です。AnimationIntAdd/Substract/Multiply/DivideはそれぞれIntのパラメータをあらかじめ設定しておいた値で四則演算することができます。(進行状態ごとに状態を用意)AnimationTriggerAnimationTriggerはトリガーを発生したということを管理する方式です。ある行動を実施(OnInteractなど)するごとにAnimationが切り替わっていくというようなときに使えます。状態を同期させるVRC_ObjectSyncとAnimatorが同オブジェクトに入っていると、オブジェクトをPickupしている間、常にAnimatorの全変数を同期し続けます。子のAnimator等がこの影響を受ける事はありません。2018年8月17日Animatorコンポーネントをつけたオブジェクトと同じオブジェクトにVRC_PickupとVRC_ObjectSyncをつけることでAnimationParameterが同期します。AnimatorはAnimationParameterによっていまのAnimationを管理しているのでオブジェクトの状態が全プレイヤーで同じになります。triggerに関してはトリガーを押したという情報だけなのでtriggerを使った機構の場合は後から来た人のことを特に考慮した設計にする必要があります。VRC_ObjectSyncの2つの項目をどちらもfalseにすると良いでしょう。時間経過で自動的にAnimationを切り替えていくことになります。変形アニメーションと状態維持アニメーションを用意してその間を矢印でつなぎます。HasExitTimeにチェックをいれることで変形後に状態維持するようなアニメーションを用意できます。状態維持アニメーションが一部回転しつづけるなどのアニメーションを常に実行するためにLoopTimeにチェックをいれておきます。このInspectorの表示にはAnimationファイルを選択するか、Animatorウィンドウのオレンジや灰色の四角をダブルクリックすることで切り替えられます。複雑なギミックを組むとなるとAnimatorの以下の性質を使っていくことになると思います。Defalutにチェックをいれると別のAnimationで設定されていて実行中のAnimationで設定されていない値は初期値に戻るここらへんは応用的なものなのでここでは詳細な解説は割愛します最後にVRCSDKでAnimatorに対してできることを中心に解説していきました。Animatorでできることは限られていますが、発想次第でも多くのことは実現できると思います。この記事では基本的な部分を端的に書いているので分かりづらかったり、説明不足な部分があると思います。そんなときはここで使われている用語で検索したり、下部の参考ページ等を見ることでよりAnimatorと和解できるかと思います。なりましたが、この記事が表現したいことを表現するための手助けになれば幸いです。本記事は今後も更新して、より分かりやすい記事にしたいと思っているので質問や間違いの訂正等はコメント欄やTwitterのほうまでぜひ連絡ください。参考ページ・動画・PrefabAnimatorを使う際に参考になりそうな情報が載ったページや動画、Prefabです。hatsucaさんによるVRChatのワールドで使うためのAnimatorの解説です。hatsucaさんの作成されたギミック集です。Animatorを使った同期ドア、タイマー、銃弾再利用銃が入ってます。AnimationIntを使ったブタジエンさん作のシステムです。JetDogs氏の作成されたワールドギミックの詰め合わせ。ワールドで使える基本的なギミックが多く入っています。PrefabによってはStandardAssetsやFinalIKが必要なものがあります。ナルさんが作成されたワールドギミックの詰め合わせ。しょこら@gatosyocora高知で大学生やっています。upLoginユーザーは見つかりませんでした。