Attach-To-Me マニュアル
このプレハブについて
このプレハブはVRChatの中でオブジェクトをアバターに貼り付けるための汎用的なシステムです。プレイヤーが自分、または他人のアバターにオブジェクトを追従させることができます。例えば、フレンドの見えないところや、自分じゃ調整しづらいところにアクセサリーを付ける、みたいなことができます。
追従オブジェクトの位置計算はローカルなので、ずれずにボーンに追従できます。
ワールド内の使い方:デスクトップの場合
オブジェクトをピックアップすると、画面上に操作説明が表示されます。追従させたいところに置いてから、左マウスボタンでボーンを選択、あるいは中ボタンでプレイヤーを選択できます。
追従させたオブジェクトはピックアップできなくなります。一度左ALTを押すと一時的にピックアップできるようになります。また、三回押すことで自分についているオブジェクトを全部解除できます。位置の微調整ができるために、ピックアップしただけでは追従は解除されません。追従解除は持ちながら中マウスボタン、もしくは持ちながら範囲外まで移動すればできます。
ワールド内の使い方:VRの場合
オブジェクトをピックアップしたら、まずは位置を合わせてください。追従候補のボーンは青で表示されます。持ち手でトリガーを引くとそのボーンに追従するようになり、表示が緑になります。別のボーンに変更する場合はもう一度持ち手のトリガーを引いてください。また、持ってない方の手のトリガーで選択されたプレイヤーを変更できます。
ピックアップ判定が残ると手などに追従した場合が邪魔なので、追従が始まるとピックアップできなくなります。もう一度ピックアップするためには、右手のサムスティックを下に引いてください(Viveコンの場合は右タッチパッドの下部分を押してください)
追従を止めるためには、オブジェクトを持ちながら、持ってない方の手のトリガーを引いてください。
ボーン表示
トラッキング状況によってボーンの色が変わります。
- 青: 追従はしてないが、トリガーを引けば表示されたボーンが選択されます。
- 緑: オブジェクトを離すと追従します。
- 赤: ボーンが範囲外なので、落とすと追従が停止します。
[example images]
ワールド製作者向けの使い方説明
導入
以下のパッケージをまずUnityに導入してください
- VRCSDK3-Worlds
- UdonSharp (version 0.20.1 以上)
- VRC Attach-To-Me
オブジェクト設定
オブジェクトを追従可能にするためには、ヒエラルキーで右クリックして「[AttachToMe] Make Attachable」を選択してください。これで殆どの設定が自動的に行われます。新しいオブジェクトが制作され、選択したオブジェクトがその子としてpickupに改名されます。
セットアップしたあとはpickupオブジェクトのコライダー範囲を確認してください。MeshRendererが元々ついていたオブジェクトなら自動的に設定されることが多いが、そうでない場合は調整してください。
Attachment DirectionオブジェクトのZ軸を追尾想定方向に合わせてください。この方向は大き目な矢印で表示されます(矢印の長さは追尾可能範囲です)
なお、Attachableコンポーネントの複数選択編集ができます。
Attachables Controller
初めてアタッチオブジェクトを作ると、「Attachables Controller」というオブジェクトがシーンに追加されます。このオブジェクトは移動しても構わないが、非アクティブにしないようにご注意ください。また、うっかりと削除した場合は、アタッチオブジェクトをどれか選択し、Attachables Configの中の項目をどれかいじれば復活します。
設定項目
設定項目は「日本語に切り替え」を押せば日本語化されます。
- ボーン選択範囲:オブジェクトからボーンまでの最大距離を設定(メートル)
- 方向マーカー、指向性:追従しやすい方向を設定(詳しくは下で解説)
- 指ボーンに追従しない:チェックが入っていると指ボーンを選択できなくなります。指に付けることが想定されてない大きなアクセサリーなどには推奨
- リスポーン時間:手に持ったり、ボーンに追従したりせずに指定した時間(秒数)が経過したら、初期位置に戻ります。
0
で無効化できます。リスポーンはローカル座標で行うので、親オブジェクトが動いている場合はそれに準じてリスポーン地点も移動します。 - 取り外しできるプレイヤーの設定:すでに追従しているオブジェクトを誰が外せるか設定できます。追従しているオブジェクトを奪わせないためには便利かもしれない。
- Animator連動設定: 詳しくは下で解説
指向性
Attachment Directionオブジェクトがボーン選択に指向性を与えます。これによりボーン選択がよりやりやすくなります。ボーン選択システムはAttachment MarkerのローカルZ軸の線に近いボーンを優先して選択します。例えば、帽子の場合はZ軸を下(頭へ)に設定したり、指輪だったら真ん中を通るように設定したりできます。
方向性が全くない、対照的なオブジェクトを作っている場合は、指向性設定をゼロにしてこのシステムを無効化してください。
Animator連動設定
アタッチオブジェクトがAnimatorに状態を知らせて制御することができます。「連動させるAnimator」を該当Animatorに設定してください。フラグパラメーターで指定する名前は、Animatorの方のbool変数に該当します。
ワールド内チュートリアル
デフォルトでは、初めてワールドに入ってからアタッチオブジェクトを手に取ったり、あるいはVRなら追従オブジェクトに手をかざすととチュートリアルが表示されます。このチュートリアルはユーザーがボーン選択、プレイヤー選択、そしてピックアップ判定復活という操作を行えば出なくなります。
この表示はユーザーにAttachToMeシステムの操作方を知らせるために実装していますが、不要でしたら「Attachables Controller」の中のTutorialオブジェクトを無効化することでなくせます。
よくある問題
ON/OFFがついた場合、エラーが出ずに、アタッチオブジェクトが一切反応しない
シーンが読み込んだ直後に非アクティブ化しないようにしてください。Udonのバグのせいで、Startが呼ばれたはずのフレームで非アクティブ化すると永久的に壊れてしまう場合があります。
なお、エディター上で最初から非アクティブになっている場合は問題になりません。