Raycast
VRChatのVRCRaycastコンポーネントを使用すると、アバターはシーン内でレイ(光線)を発射し、ワールド内のコライダーやプレイヤーにヒットさせることができます。レイがヒットした地点にトランスフォームが配置されます。
コンポーネントのプロパティ

| プロパティ | 説明 | |
|---|---|---|
| Raycast Direction | レイを発射する方向です。これはローカル空間で適用されるため、トランスフォームの回転の影響を受けます。 | |
Distance | レイが到達できる最大距離です。0に設定すると、可能な限り遠く(1000ユニット)までレイが到達します。 | |
| Apply Transform Scale | このプロパティを有効にすると、コンポーネントがアタッチされているトランスフォームの損失ありZスケール(lossy Z scale)がレイの距離に影響を与えるようになります。 | |
| Collision Mode | このレイキャストコンポーネントが衝突するレイヤーを制御します。ワールドで使用されるレイヤー、プレイヤーのコライダーで使用されるレイヤー、あるいはその両方と同時に衝突させるよう設定できます。また、高度なユースケース向けに、衝突させる特定のレイヤーを手動で定義することも可能です。 | |
| Hit Worlds | レイは Default レイヤーおよび Environment レイヤー、ならびにすべてのユーザー制御レイヤーと衝突します。(デフォルト) | |
| Hit Players | レイは Player レイヤーおよび PlayerLocal レイヤーと衝突します。 | |
| Hit Worlds And Players | レイはワールドとプレイヤーの両方と衝突します。上記の2つのオプションのレイヤーを組み合わせたものです。 | |
| Hit Custom Layers | レイは、手動で指定した一連のレイヤーと衝突します。 | |
| Custom Collision Layers | Collision Mode が Hit Custom Layers に設定されている場合に使用するカスタムレイヤーセットです。カスタムレイヤーを使用していないときは、このプロパティは非表示になります。 | |
| Result Transform | レイキャストの衝突地点に合わせて移動(およびオプションで回転)させるトランスフォームです。このコンポーネントを機能させるには、Result Transform を割り当てる必要があります。 | |
| Apply Rotation | デフォルトでは、Result Transform は位置のみが変更されます。Apply Rotation を有効にすると、Alignment Axis が衝突した面(衝突法線)の方向を向くように回転も適用されます。 | |
| Alignment Axis | Result Transform に回転を適用する際、どの軸を衝突した面に合わせるかを制御します。このプロパティは、結果に回転を適用しない場合は非表示になります。 | |
| Behavior On Miss | 何もヒットしなかった場合に Result Transform コンポーネントがどのように動作するかを制御します: | |
| Do Nothing | Result Transform に対して何も行いません。(デフォルト) | |
| Snap To Start | Result Transform をレイの始点に移動します。Apply Rotation が有効な場合、レイキャストコンポーネントに向き合うように回転も適用されます。 | |
| Snap To End | Result Transform をレイの終点に移動します。Apply Rotation が有効な場合、レイキャストコンポーネントに向き合うように回転も適用されます。 | |
Parameter | レイキャストに関する情報をアバターの Animator に渡すために使用されるプレフィックスです。詳細は以下の Raycast Parameters を参照してください。 |
アバター1体につき、最大80個までのVRCRaycastコンポーネントという上限があります。
互換性の理由から、この上限はFinalIKコンポーネントと共有されます。VRCRaycastで要件を満たせる状況であれば、原則としてFinalIKを使用すべきではありません。
Raycast Parameters
Parameterプロパティでは、レイトレースに関する情報をアバターコントローラーに渡すためのパラメータをいくつか定義できます。例えば、以下の項目において、ParameterにBeamを設定すると、{parameter}の部分がBeamに置き換わります。
Parameterに何らかの値が設定されると、アバターのAnimator上で以下のパラメータが設定されるようになります。
{parameter}_Hit[Bool] - レイが何かに当たっているかどうか。{parameter}_Ratio[Float] - 0.0〜1.0の範囲。レイが何かに当たるまでに進んだ距離の、最大距離に対する割合です。例えば、設定された最大距離の半分まで進んだ場合、この値は0.5(50%)に設定されます。{parameter}_Distance[Float] - レイが何かにヒットするまでに実際に移動したワールド空間上の距離です。
レイが何にもヒットしなかった場合、{parameter}_Ratio パラメータと {parameter}_Distance パラメータは以下のように動作します:
もし
Positioning On MissがDo Nothingに設定されている場合、これらのパラメータはいずれも、最後にレイが何かにヒットした際の値を保持します。レイがこれまで一度も何かにヒットしていない場合は、どちらも0に設定されます。もし
Positioning On MissがSnap To Startに設定されている場合、これらのパラメータはいずれも0に設定されます。Positioning On MissがSnap To Endに設定されている場合、比率は 1 に、距離はこのコンポーネントが許容するレイキャストの最大移動距離に設定されます。
使用のヒント
- レイキャストの最大距離は 1000 ユニットに制限されています。
VRCRaycastコンポーネントがアタッチされているトランスフォームや、その親要素を自身の結果トランスフォームとして使用しないでください。これを行うと、レイキャストコンポーネントが自身の計算結果によって移動させられ、予期しない動作を引き起こす可能性があります。- ギズモを有効にすると、アバタープロジェクトで
VRCRaycastコンポーネントを選択している間、シーンビューにオレンジ色の線が表示され、レイキャストの方向を確認できます。 - アバタープロジェクトでプレイモードに入ると、アバターをビルドすることなくレイキャストの動作をテストできます。
最終更新: