さわらないで v1.1.0 使用説明書
こちらの説明書は ChatGPT によって生成されました。翻訳には誤りが含まれる可能性があります。誤りがある場合はご容赦ください。
ギミック紹介
本ギミックは Non-Destructive Modular Framework と Modular Avatar を使用し、非破壊的にアバターの頭部が他のプレイヤーの両手の接近時に回避動作を行い、回避時にツールで定義された表情を再生する機能を実現しています。
具体的には、アバターの頭骨に PhysBone を備えた頭骨代理を挿入することで、他のプレイヤーの手部が近づいたときに回避動作を行う仕組みとなっています。
注意事項
- 本ギミックは VRCSDK3、Unity 2022.3.22f1 環境でのみテストされています。
- 本ギミックはヒューマノイド(Humanoid)かつ頭骨が存在するアバターのみ対応しています。
- 本ギミックはアバターのボーン階層を変更するため、他のギミック(例えば取り外し可能な頭部ギミックなど)と競合する可能性があります。
インポート手順
インポート前の準備
このギミックは、以下の Unity プラグインに依存しています。 インポートする前に、次のプラグインがインストールされていることを確認してください:
- Modular Avatar (1.13.0以上): https://modular-avatar.nadena.dev/
アセットパッケージのインポート
Don't Touch Me.unitypackage を Unity の Project ウィンドウにドラッグし、プロンプトが表示されたら Import をクリックして、アセットパッケージを Avatar プロジェクトにインポートします:

さわらないでのインストール
1. Prefab の追加
Assets/LuiStudio/Don't Touch Me/Dont't Touch Me.prefab を Project ウィンドウから Hierarchy 内のアバターの下にドラッグ&ドロップしてください:
![]()
2. ギミックの設定
1. 頭部コライダーの位置とサイズを調整
Prefab を追加して選択すると、シーンの座標 (0, 1.5, 0) に白い球形ワイヤーフレームが表示されます:

白い球形ワイヤーフレームが表示されない場合は、現在のウィンドウがシーンビューであること、そしてシーンビュー右上の Gismos が有効になっていることを確認してください。
Avatar に VRC Avatar Descriptor コンポーネントが存在しない場合、Animator コンポーネントが存在しない場合、または Animator コンポーネントに Humanoid Avatar が設定されていない場合、頭部コライダーは座標 (0, 1.5, 0) に配置されます。ただし Avatar の要件を満たしていないため、頭部コライダーを編集することはできません。
Hierarchy で Don't Touch Me[1] を選択し、Inspector で Don't Touch Me Setup Tool コンポーネント[2] を見つけ、頭部コライダー の下にある リセット[3] ボタンをクリックすると、頭部コライダーを Avatar の頭部[4] に素早く配置できます:

頭部コライダー の下にある 編集 ボタン[1] をクリックすると、頭部コライダーを編集できます:

編集 をクリックすると、白い球形ワイヤーフレームの中央にトランスフォームツールが表示されます。移動 と スケール ツール[1] を使用して位置とサイズを調整してください:

調整が完了したら、任意のゲームオブジェクトを選択するか、Inspector 内の DTM Head Transformer コンポーネントにある 適用[1] をクリックして編集を終了します:

2. よりスムーズな回避を有効にする(オプション)
「よりスムーズな回避」とは、ギミックが PhysBone コンポーネントを生成する際に、Stiffness を使用して頭部の動きをより滑らかにするかどうかを指します。
Don't Touch Me Setup Tool コンポーネント内で よりスムーズな回避[1] にチェックを入れることで、この機能を有効にできます:

よりスムーズな回避を有効にすると、頭部が移動する際(特に移動方向の変化時)に、慣性の影響で頭部が回転することがあります(特に PC プラットフォームで顕著です)。
3. 回避表情を追加する(オプション)
回避表情とは、回避動作を行う際に再生される表情のことで、Blendshape アニメーションによって実現されます。複数の表情を追加することができ、それらを回避のたびに「順番に再生」「ランダムに再生」「特定の表情を固定して再生」するように設定できます。
1. 表情に関する注意事項
表情の数とカスタムメニュー項目モードに応じて、メニューと同期パラメータの使用量は 1 bit から 19 bits の間で変動します。具体的な同期パラメータの使用量はこちらをご覧ください。
設定された表情リストの中で、BlendShape が存在しない表情は削除されます。
2. 表情を追加する
Don't Touch Me Setup Tool コンポーネント内の表情リスト右下にある + ボタン[1] をクリックして、新しい表情を追加します:

3. 表情の BlendShape を追加する
追加した表情の BlendShape リスト右下にある + ボタン[1] をクリックして、新しい表情用 BlendShape を追加します:

新しい BlendShape を追加すると、リストは以下のようになります(画像内の番号は下記にて説明):

追加されたエントリには以下の項目があります:
メッシュ[1]:再生したい BlendShape が存在するSkinned Mesh Renderer;BlendShape[2]:再生したい BlendShape の名前;ウェイト[3]:その BlendShape を再生する際のウェイト値です。
BlendShape を含む Skinned Mesh Renderer がアタッチされた GameObject を メッシュ[1] にドラッグし、BlendShape[2] から再生したい BlendShape を選択し、ウェイト[3] を調整します。
プレビュー[4] をチェックするか、またはウェイトを調整すると、Unity はアニメーションモードに入り、現在の表情の効果をリアルタイムで確認できます:

プレビュー[4] のチェックを外すか、別のゲームオブジェクトを選択すると、表情のプレビューモードを解除できます。
4. カスタムメニュー項目(オプション)
表情リストの下にある カスタムメニュー項目 では、メニュー項目の名前とモードを設定できます。設定可能な項目の数は、表情の数とメニュー項目のモードによって異なります。カスタムメニュー項目 では、同期パラメータの使用量をリアルタイムで確認できます[1]:

以下は各メニュー項目の設定についての説明です:
コンポーネント内に対応するカスタムメニュー項目が表示されない場合、それは表情数が設定基準に満たないか、または 表情有効化モード を 常に無効 に設定していることを意味します。表示されないメニュー項目は Avatar のビルドに含まれません。
メインタイトル
表示名- アクションメニューに表示されるメインスイッチまたはサブメニューの名前。
表情有効化
-
表示名- アクションメニューに表示される、回避表情を有効/無効にするスイッチの名前。 -
モード- このメニュー項目のモード。詳細は以下の通りです:モード 説明 デフォルト ビルド時にこのスイッチを追加し、1 bit の同期パラメータを使用;
カスタム表情が2つの場合、さらに 1 bit の表情パラメータを使用(合計 2 bits);
カスタム表情が2つ以上の場合、さらに 8 bits の表情パラメータを使用(合計 9 bits)常に有効 ビルド時にこのスイッチを無視し、この機能は常に 有効。同期パラメータは使用しない;
カスタム表情が2つの場合、1 bit の表情パラメータを使用;
カスタム表情が2つ以上の場合、8 bits の表情パラメータを使用常に無効 ビルド時にこのスイッチを無視し、この機能は常に 無効。同期パラメータは使用しない;
ランダム表情 と 表情ロック 機能は無効化される
ランダム表情
-
表示名- アクションメニューに表示される、ランダム回避表情を有効/無効にするスイッチの名前。 -
モード- このメニュー項目のモード。詳細は以下の通りです:モード 説明 デフォルト ビルド時にこのスイッチを追加し、1 bit の同期パラメータを使用 常に有効 ビルド時にこのスイッチを無視し、この機能は常に 有効。同期パラメータは使用しない常に無効 ビルド時にこのスイッチを無視し、この機能は常に 無効。同期パラメータは使用しない
表情ロック
-
表示名- アクションメニューに表示される、表情を選択して固定するサブメニューの名前。 -
モード- このメニュー項目のモード。詳細は以下の通りです:モード 説明 表情ロック機能を有効化 ビルド時に、固定する表情を選択できるサブメニューを追加し、8 bits のパラメータを使用 表情ロック機能を無効化 ビルド時にこの機能を無視し、同期パラメータは使用しない
5. その他の設定
1. サブメニューやスイッチの円盤メニュー内の位置を変更する(オプション)
本ギミックのサブメニューはデフォルトでルートメニューの直下に配置されており、多機能なアバターでは使いづらい場合があります。MA Menu Installer コンポーネントを編集して、サブメニューやスイッチの配置場所を変更できます:
- Hierarchy で
Don't Touch Meを選択 - Inspector で
MA Menu Installerコンポーネントを見つけ、Select Menuボタンをクリック - サブメニューやスイッチを配置したいメニューを選択
表情を追加していない場合、ギミックは元のサブメニューをスイッチに置き換えます。詳細は 表情に関する注意事項 をご参照ください。
テスト
「モーアイラオズ(Don't Touch Me)」を導入した後は、Play Mode に入ることで動作確認を行うことができます。
まずは Gesture Manager が必要です。これは VRChat Creator Companion からインストールできます。
Gesture Manager をインストールしたら、Unity ウィンドウの Tools/Gesture Manager Emulator をクリックします:

クリックすると、シーン内に GestureManager[1] という名前の GameObject が追加されます。これを選択して Inspector を開き、Gesture Manager コンポーネント内の Enter Play-Mode ボタン[2] をクリックして Play Mode に入ります:

Play Mode に入ると、アバターの子階層内に [EditorOnly] DTM Testing Collider という GameObject が出現します。これを使ってギミックの動作を確認します。
Scene ビューに切り替えて [EditorOnly] DTM Testing Collider[1] を選択し、シーン内で 移動ツール[2] を使ってこのオブジェクトを近づけたり離したりしながら、Gesture Manager のアクションメニューを用いて、ギミックの回避機能や表情機能をテストできます:

もし 回避機能スイッチ のオン/オフによってアバターの頭部が適切に回避/非回避し、表情スイッチ のオン/オフによって表情が再生/停止するなら、このギミックは正常に動作しています。
[EditorOnly] DTM Testing Collider GameObject は Play Mode 中にのみ追加され、アバターをアップロードする際には含まれません。
使用方法
回避機能の有効化・無効化
| 表情数 | 方法 |
|---|---|
| 0 | アクションメニューを開き、Don't Touch Me スイッチを見つけて切り替えることで回避機能を有効/無効にします |
| >0 | アクションメニューを開き、Don't Touch Me サブメニューに入り、サブメニュー内の Don't Touch Me スイッチで回避機能を有効/無効にします |
回避表情の有効化・無効化(回避表情がある場合のみ)
アクションメニューを開き、Don't Touch Me サブメニューに入り、サブメニュー内の Enable Emotes スイッチで回避表情の再生を有効/無効にします。
ランダム回避表情の有効化・無効化(回避表情数が2を超える場合のみ)
デフォルトでは、回避時に表情リストの順番通りに回避表情が再生されますが、ランダム表情を有効にするとリストからランダムに表情が選ばれて再生されます。
アクションメニューを開き、Don't Touch Me サブメニューに入り、サブメニュー内の Random Emote スイッチでランダム回避表情の有効/無効を切り替えます。
回避表情の固定(回避表情数が2以上の場合のみ)
回避表情を固定すると、回避するたびに指定した表情が再生されます。
アクションメニューを開き、Don't Touch Me/Lock Emote サブメニューに入り、サブメニュー内の Emote スイッチで固定したい表情を選択します。