WorldAniMechs使用方法について

動画と文章を用意しました。

動画は手順確認用で、各シチュエーションにおける手順を長くても1~2分くらいで実施しているものです。お手軽に使えるのが分かってもらえるようにしています。

文章はドキュメントを兼ねてとても詳しく書いています。

好きなほうを見て、使ってみてください。

【重要】既にダウンロード済みの方へ:1.02に更新しました。アップロード時にエラーが発生する不具合を修正しました。気がつくのが遅れて、大変すみません。
ファイル構成が変わったので、Wata23_Assets内のAnimationフォルダだけ残して、他のフォルダは全て消してから、新しいUnityPackageをインポートしてください。
Unityは開いた状態で作業して大丈夫です。Scene上には影響なく移行できることを確認済みです(不安でしたら空のシーンを表示しておくか、バックアップをオススメします)

・Ver1.03に更新しました。アニメーション初期化用のオプション"isInit"にチェックを入れると、オフの状態からオンになった時にアニメーションが初期化されます。

動画

"既存のAnimatorを利用する"でWAM_Startを利用する場合

"既存のAnimatorを利用する"でWAM_Interactを利用する場合

"既存のAnimatorを利用する"でWAM_Pickupを利用する場合

"既存のAnimatorを利用する"でWAM_EnterExitを利用する場合

"新規のAnimatorを作成する"でWAM_Startを利用する場合

"新規のAnimatorを作成する"でWAM_Interactを利用する場合

"新規のAnimatorを作成する"でWAM_Pickupを利用する場合

"新規のAnimatorを作成する"でWAM_EnterExitを利用する場合

文章

使い方について画像付きで書いていきます。

時間のない人は、アセット内にあるUsageというテキストアイテムに手短に書いているので、そちらを見るのが良いかもしれません。

こちらは全て書くつもりで書いていきます。

まずHierarchyで右クリックして、メニューから"WorldAniMechs"を選びます。

"既存のAnimatorを利用する"か、”新規のAnimatorを作成する”を選びます。この記事の左側にある目次から、説明を読みたい場所をクリックして飛んでください。

"既存のAnimatorを利用する"

選択すると以下のようなウィンドウになります。
説明通り、オブジェクトをセットしてください。必要なオブジェクトがセットされたら下のボタンが活性化します。
活性化したボタンを押すことでギミックを作成できます。

4つのボタンの違いはAnimatorを起動するタイミングです。それぞれ以下のようになっています。
WAM_Start … ジョイン時
WAM_Interact … インタラクト時
WAM_Pickup … ピックアップ時
WAM_EnterExit … コライダーの領域内に出た時・入った時

Target GameObjectにセットされたゲームオブジェクトに、InteractやEnterExitのコライダーや、Pickupを作る時に必要なVRC_Pickupなどが付いていない場合は、自動生成するかどうかについての質問が出てきます。

モノによって違うメッセージが出ます

はいを押すと自動で必要なコンポーネントを付けます。いいえを押すと、何もせずボタンを押す前の状態に戻ります。

先に必要なコンポーネントを付けていた場合は、それをそのまま利用する形をとるのでコライダーのisTriggerやRigidbodyのuseGravityなどは自分で適切に設定してください。

自動で設定するコライダーはBoxコライダーです。Boxコライダーは付けた時に、MeshRendererがあれば、その形状に合わせて大きさを変えてくれますが、形状は箱型です。
なので必要に応じてコライダーの大きさを変えるなり、違うコライダーを付けるなりしてください。
MeshRendererがない場合は1mの立方体のコライダーになります。

処理が終わると以下の画面に戻ります。これでギミックが付いた状態になっています。

ゲームオブジェクトから、WAMから始まるコンポーネント(Script)を探して、設定を決めます。

WAM_Startでは、Animator GameObjectの欄(上から一つ目の欄)にセットしたゲームオブジェクトに直接付きます。

処理の遅延については、アニメーションが始まるまでの時間を設定できます。小数点付きで入力可能です。

特殊な設定として「アニメーションの進行度をマスターと同期する」があるので、これについて少し説明します。

これは後からやってきた人(レイトジョイナー)にアニメーションの進み具合を同期するものです。実質的にアニメーションのグローバル化を行っています。ただし、これはWAM_Startのみの特殊な処理となっています。
(他の3つではオン・オフの状態とそのグローバル化の兼ね合いで、管理が複雑になるため、進行度の同期は実装していません)

この同期は負荷のためか約0.1~0.3秒程度の差が発生することが確認できています。完璧に同時タイミングではないことを了承ください。

WAM_Interactでは、Target GameObjectの欄(上から二つ目の欄)にセットしたゲームオブジェクトに直接付きます。

設定については特殊なものがないので割愛します。

WAM_Pickupでは、Target GameObjectの欄(上から二つ目の欄)にセットしたゲームオブジェクトの子オブジェクト”Settings”に付きます。直接付くわけではありません。

直接付けない理由は、Manual SyncのUdonとVRC Object Syncを同時につけるとVRCSDKに怒られるので、このような手間を踏んでいます。
(逆にピックアップオブジェクトの位置等を同期させたい時は、VRC Object Syncを付けてくださいということです)

Settingsは階層を移動させたり、名前を変えないでください。動かなくなります。

特殊な設定としてIs Onceがあります。
説明に書いてある通りなのですが、イマイチピンとこない人向けに説明すると、『遺跡の奥にあるお宝を取った時に、今まで来た道が罠だらけになる』みたいなシチュエーションとかで使えると思います。
(この設定がない場合は手放したときにAnimatorがオフになるので、手放すと罠が止まってしまいます)

WAM_EnterExitでは、Target GameObjectの欄(上から二つ目の欄)にセットしたゲームオブジェクトに直接付きます。

今まで出てきたもので説明した設定項目ばかりなので割愛します。

EnterExitは付いているコライダーの領域がそのまま判定エリアになります。ですので領域についてはコライダーを編集して、自分で調節してください。

"既存のAnimatorを利用する"についての説明は以上になります。
あとは注意点・補足についてを読むことをオススメします。

"新規のAnimatorを作成する"

ボタンを押すと以下のような画面になります。

書いてある通り下の3つの場合、判定の対象にしたいゲームオブジェクトをセットする必要があります。

試してみるなら、Hierarchyで右クリックして、[3D Objects]→[Cube]を選択して、生成したCubeを入れて見ると分かりやすいと思います。

仮に何も入れてない場合は、大きさ(1,1,1)のボックスコライダーがインタラクトできたり、ピックアップできたりします(メッシュがないので虚空をインタラクトしたり、虚空をピックアップしたりします)

何が言いたいかと言いますと、InteractやPickupの場合はMeshRendererの付いてるゲームオブジェクトをセットすることを想定しています。

EnterExitは逆に付いてない空のゲームオブジェクトをセットすることを想定しています
(ただの判定エリアなのでコライダーだけで十分です。意図としては、位置が指定できると便利だなと思って、空のゲームオブジェクトをセットできるようにしています)

次にゲームオブジェクトから、WAMから始まるコンポーネント(Script)を探して、設定を決めます。

WAM_Startでは、生成されたWAM_Startという名前のゲームオブジェクトに直接付きます。

処理の遅延については、アニメーションが始まるまでの時間を設定できます。小数点付きで入力可能です。

特殊な設定として「アニメーションの進行度をマスターと同期する」があるので、これについて少し説明します。

これは後からやってきた人(レイトジョイナー)にアニメーションの進み具合を同期するものです。実質的にアニメーションのグローバル化を行っています。ただし、これはWAM_Startのみの特殊な処理となっています。
(他の3つではオン・オフの状態とそのグローバル化の兼ね合いで、管理が複雑になるため、進行度の同期は実装していません)

この同期は負荷のためか約0.1~0.3秒程度の差が発生することが確認できています。完璧に同時タイミングではないことを了承ください。

WAM_Interactでは、Target GameObject欄に何も入れていない場合、生成されたWAM_Interactという名前のゲームオブジェクトの子オブジェクト"Settings"に付きます。
入れていた場合はそのゲームオブジェクトに付きます。

設定については特殊なものがないので割愛します。

WAM_Pickupでは、Target GameObject欄に何も入れていない場合、生成されたWAM_Pickupという名前のゲームオブジェクトの子オブジェクト"Settings"に付きます。
入れていた場合はそのゲームオブジェクトに付きます。

直接付けない理由は、Manual SyncのUdonとVRC Object Syncを同時につけるとVRCSDKに怒られるので、このような手間を踏んでいます。
(逆にピックアップオブジェクトの位置等を同期させたい時は、VRC Object Syncを付けてくださいということです)

Settingsは階層を移動させたり、名前を変えないでください。動かなくなります。

特殊な設定としてIs Onceがあります。
説明に書いてある通りなのですが、イマイチピンとこない人向けに説明すると、『遺跡の奥にあるお宝を取った時に、今まで来た道が罠だらけになる』みたいなシチュエーションとかで使えると思います。
(この設定がない場合は手放したときにAnimatorがオフになるので、手放すと罠が止まってしまいます)

WAM_EnterExitでは、Target GameObject欄に何も入れていない場合、生成されたWAM_EnterExitという名前のゲームオブジェクトの子オブジェクト"Settings"に付きます。
入れていた場合はそのゲームオブジェクトに付きます。

今まで出てきたもので説明した設定項目ばかりなので割愛します。

EnterExitは付いているコライダーの領域がそのまま判定エリアになります。ですので領域についてはコライダーを編集して、自分で調節してください

その後、生成されたWAMから始まる名前のゲームオブジェクトの下に、アニメーションで使いたいオブジェクトを入れます。

そしてAnimatorに設定されてるAnimationを編集して、好きなギミックを作ってください。

補足

重要:[Wata23_Assets]のフォルダやその中のファイルを移動・削除すると正常に動かなくなる可能性があります。

・重要:パラメータでの遷移を入れているAnimator Controllerは想定していません(その場合は初期遷移だけ動くことでしょう)

・Animatorが付いたゲームオブジェクトを選択中に、"既存のAnimatorを利用する"を押すと自動的にAnimatorを選択する欄にセットします。

・ゲームオブジェクトを選択中に、"新規のAnimatorを作成する"を押すとTargetObjectの欄に自動でセットします。

・新規作成する場合はAnimator ClipやAnimator Controllerは自動で別名ファイルとして複製しているので、作る度に複製して差し替えたりする必要はありません。Wata23_AssetsのAnimationFilesの中に自動生成されていきます。

・新規作成する場合は原点に生成されるので、好きに移動させてください

・TargetObjectに既に必要なコンポーネントが付けられている場合はそれをそのまま利用しています。こちらではノータッチの方針で作っています。

・同様にレイヤーについてもノータッチの方針です。新規作成した場合はDefaultレイヤーになります。プレイヤーがコライダーにぶつかって困る場合はisTriggerにチェックを入れましょう。
isTriggerを使っていないMeshColliderの場合はプレイヤーにぶつかるので、MeshColliderを使いたい場合はレイヤーのコリジョン設定を弄ってぶつからないようにすると良いでしょう。

・Pickupオブジェクトは同期させたい時にVRC Object Syncを付けられるように、Udonを階層化してあります。必要に応じて自分で付けてください。設定は子オブジェクトにあります。

いいなと思ったら応援しよう!