VRChat 非公式日本語ドキュメント

コンタクト

コンタクトは、アバターやワールドが他のコンタクトとの衝突を検知するためのシステムです。衝突を利用することで、アバターやワールドの挙動を制御し、あらゆる種類の独自のアクションを実行させることができます。

これらは通常のUnityのコライダーとは別物です。コンタクトは「センダー(Sender)」と「レシーバー(Receiver)」に分類されます。センダーは検知されるために存在し、レシーバーはセンダーを検知して、それに応じてパラメーターを更新したりイベントをトリガーしたりします。

アバターでコンタクトを使用する場合、使用するコンタクトの数はパフォーマンスランクに影響を与えます。

VRCContactSender

Contact Senderコンポーネントは、Contact Receiverと接触した際にContact信号を送信する空間の体積を定義します。

Shape

このセクションには、ContactSenderの形状を定義する設定が含まれています。

コンタクト形状の半径は最大3メートル、幅/高さ/奥行きは最大6メートルに制限されています。コンタクトがスケーリングされたGameObjectにアタッチされている場合、これらの制限はスケーリング後に適用されます。

Filtering

このセクションには、このContactSenderがContactReceiverとどのように相互作用するかを調整および定義するための設定が含まれています。

例として、以下のタグを設定すると、デフォルトのHead ContactReceiverや、Faceというタグを持つカスタムのContactReceiver(Fが大文字であることに注意してください!)と接触したときにコンタクト信号が送信されます。

タグには任意のテキストを使用できますが、SDKには、自身で作成していないアバターやワールドとも連携するコンタクトシステムを簡単に作成できるように、推奨されるタグのリストが用意されています。詳細についてはBuilt-In Contact Tagsを参照してください。

カスタム衝突タグを使用する場合は、組み込みタグの形式に合わせてPascalCaseで記述することを推奨します。

Standard Colliders

アバターには、「Colliders」と呼ばれるセクション内に一連の「Standard Colliders(標準コライダー)」がAvatar Descriptorで定義されています。このセクションでは、すべてのアバターに存在する標準的なコライダーを定義できます。これらは特に変更しなければ自動的に設定されますが、自身のアバターに合わせて微調整することも可能です。これらのコライダーはパフォーマンス評価には影響しません。

これらのコライダーは、主に他の人が自分のアバターで検知できる組み込みの身体部位タグを使用したContact Senderとして機能します。しかし、指と手のコライダーは、他の人のPhysBoneやワールド内のPhysBoneに影響を与えることができるグローバルなPhysBoneコライダーを作成するためにも使用されます。

VRCContactReceiver

VRCContactReceiver コンポーネントは、Contact Sender と接触した際に信号を受け取る空間の範囲を定義します。

Contact Receiver が Contact Sender から信号を受け取った際の挙動は、その Contact Receiver が何に属しているかによって異なります。

Shape

このセクションには、ContactReceiver の形状を定義する設定が含まれています。

コンタクトの形状は、最大半径 3 メートル、最大幅/高さ/奥行き 6 メートルに制限されています。コンタクトがスケールされたゲームオブジェクトにアタッチされている場合、これらの制限はスケーリング後に適用されます。

Filtering

このセクションには、この ContactReceiver が ContactSenders とどのように相互作用するかを調整・定義するための設定が含まれています。

Receiver

このセクションには、信号を受け取った際に Receiver が何を行うかを定義する設定が含まれています。

アバター上の Receiver

アバターで使用する場合、Contact Receiver はコンタクト信号に応答して、アバターの Animator 内の Animator Parameter を設定します。

Receiver Type は、信号を受信した際のパラメータ設定の動作を定義します。

近接値(proximity)は、接触がトリガーの中心からどれだけ近いかを示します。これは、SenderからReceiverまでの最も近い点として計算されます。 ボックス形状のContact Receiverの場合、Use Face Proximity オプションを有効にできます。このオプションを有効にすると、近接値の計算方法が変更され、接触がボックスの正のZ面(positive Z face)からどれだけ近いかを示すようになります。

ワールド内のReceiver

ワールド内のContact Receiverコンポーネントには、ボックス形状のContact Receiverの近接計算の設定(上記参照)を除き、設定可能なオプションはありません。 その代わり、Receiverは常に、そのReceiverと同じGameObjectにアタッチされたUdonスクリプト内のイベントを呼び出すことで、接触信号に応答します。Udonを使用して接触を処理する方法の詳細については、以下のセクションを参照してください。

ワールドでのUdonアクセス

最終更新: