Raycast
VRChatの VRCRaycast コンポーネントを使用すると、アバターからシーン内にレイ(光線)を発射し、ワールド内のコライダーやプレイヤーにヒットさせることができます。レイキャストがヒットした地点にTransformが配置されます。
コンポーネントのプロパティ
![]()
| プロパティ | 説明 | |
|---|---|---|
| Raycast Direction | レイを飛ばす方向です。これはローカル空間で適用されるため、トランスフォームの回転の影響を受けます。 | |
| Distance | レイキャストが到達できる最大距離です。0に設定すると、可能な限り遠くまで(1000ユニット)レイが飛びます。 | |
| Apply Transform Scale | このプロパティを有効にすると、このコンポーネントがアタッチされているトランスフォームのlossy Zスケールが、レイキャストの距離に影響を与えるようになります。 | |
| 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 | レイキャストに関する情報をアバターのアニメーターに渡すために使用されるプレフィックスです。詳細については、以下の レイキャストパラメータ を参照してください。 |
アバター1体につき、VRCRaycast コンポーネントは最大80個までという上限があります。
互換性の理由から、この上限は FinalIK コンポーネントと共有されています。VRCRaycast で目的を達成できる場合には、原則として FinalIK を使用しないようにしてください。
Raycastパラメータ
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に設定され、距離はこのコンポーネントで許可されるレイキャストの最大移動距離に設定されます。
使用上のヒント
- Raycast の最大距離は 1000 単位に制限されています。
VRCRaycastコンポーネントがアタッチされている Transform やその親オブジェクトを、自身の result transform として設定しないでください。これを実行すると、Raycast コンポーネント自体がその結果によって移動してしまうため、予測不能な動作を引き起こす可能性があります。- Gizmo が有効な場合、アバタープロジェクトで
VRCRaycastコンポーネントを選択すると、Raycast が照射される方向を示すオレンジ色の線がシーンビューに表示されます。 - アバタープロジェクトでプレイモードに入ると、アバターをビルドすることなく Raycast の動作をテストできます。
最終更新: