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

Raycast

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

コンポーネントのプロパティ

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 LayersCollision Mode が Hit Custom Layers に設定されている場合に使用するカスタムレイヤーセットです。カスタムレイヤーを使用していないときは、このプロパティは非表示になります。
Result Transformレイキャストの衝突地点に合わせて移動(およびオプションで回転)させるトランスフォームです。このコンポーネントを機能させるには、Result Transform を割り当てる必要があります。
Apply Rotationデフォルトでは、Result Transform は位置のみが変更されます。Apply Rotation を有効にすると、Alignment Axis が衝突した面(衝突法線)の方向を向くように回転も適用されます。
Alignment AxisResult Transform に回転を適用する際、どの軸を衝突した面に合わせるかを制御します。このプロパティは、結果に回転を適用しない場合は非表示になります。
Behavior On Miss何もヒットしなかった場合に Result Transform コンポーネントがどのように動作するかを制御します:
Do NothingResult Transform に対して何も行いません。(デフォルト)
Snap To StartResult Transform をレイの始点に移動します。Apply Rotation が有効な場合、レイキャストコンポーネントに向き合うように回転も適用されます。
Snap To EndResult Transform をレイの終点に移動します。Apply Rotation が有効な場合、レイキャストコンポーネントに向き合うように回転も適用されます。
Parameterレイキャストに関する情報をアバターの Animator に渡すために使用されるプレフィックスです。詳細は以下の Raycast Parameters を参照してください。
warning

アバター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 MissDo Nothing に設定されている場合、これらのパラメータはいずれも、最後にレイが何かにヒットした際の値を保持します。レイがこれまで一度も何かにヒットしていない場合は、どちらも0に設定されます。

  • もし Positioning On MissSnap To Start に設定されている場合、これらのパラメータはいずれも0に設定されます。

  • Positioning On MissSnap To End に設定されている場合、比率は 1 に、距離はこのコンポーネントが許容するレイキャストの最大移動距離に設定されます。

使用のヒント

  • レイキャストの最大距離は 1000 ユニットに制限されています。
  • VRCRaycast コンポーネントがアタッチされているトランスフォームや、その親要素を自身の結果トランスフォームとして使用しないでください。これを行うと、レイキャストコンポーネントが自身の計算結果によって移動させられ、予期しない動作を引き起こす可能性があります。
  • ギズモを有効にすると、アバタープロジェクトで VRCRaycast コンポーネントを選択している間、シーンビューにオレンジ色の線が表示され、レイキャストの方向を確認できます。
  • アバタープロジェクトでプレイモードに入ると、アバターをビルドすることなくレイキャストの動作をテストできます。

最終更新: