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

プレイヤーの衝突(Player Collisions)

Udonには、プレイヤーとオブジェクトの衝突を検知する方法が、TriggersPhysicsParticlesの3つ存在します。

Triggers

プレイヤーが特定のエリアに出入りしたことを検知したい場合は、OnPlayerTriggerイベントを使用するのが最適です。これには以下の3種類があります:

  • OnPlayerTriggerEnterは、プレイヤーのカプセルがTrigger Colliderに入った際に呼び出されます。
  • OnPlayerTriggerStayは、プレイヤーのカプセルがTrigger Collider内に留まっている間、フレームごとに呼び出されます。
  • OnPlayerTriggerExitは、プレイヤーのカプセルがTrigger Colliderから出た際に呼び出されます。

「Is Trigger」にチェックが入ったシンプルなBox Collider。

これらのイベントを使用するには、Colliderコンポーネントを持つオブジェクトを追加し、そのコライダーの「Is Trigger」チェックボックスを有効にします。トリガーコライダーを設定すると、オブジェクトやプレイヤーはその中を通り抜けられるようになり、コライダーを持つオブジェクトが通過する際にイベントが呼び出されます。Unityドキュメントのコリジョン(衝突)に関するページで詳細を確認できます。

danger

プレイヤーがコライダー内へテレポートしたり外へ出たりする場合や、非常に高速で移動している場合など、一部の特殊なケースではこれらのイベントがスキップされることがあります。

Physics

跳ねるボールや弾丸のように、物理演算で移動させるオブジェクトを使用する場合に利用できる、別のイベント群があります。これらのオブジェクトでは「IsTrigger」をオフにしたColliderを使用するため、環境や他のオブジェクトと相互作用します。

これらのColliderでイベントを検知するには、以下を使用します:

  • OnPlayerCollisionEnter は、プレイヤーのカプセルがColliderに入った時に呼び出されます。
  • OnPlayerCollisionStay は、プレイヤーのカプセルがCollider内に留まっている間、フレームごとに呼び出されます。
  • OnPlayerCollisionExitは、プレイヤーのカプセルがColliderから出た時に呼び出されます。
  • OnControllerColliderHitPlayerは、CharacterControllerがプレイヤーに接触した時に呼び出されます。
OnPlayerCollisionイベントは移動するオブジェクト用です

これらのイベントは、プレイヤーが静止しているオブジェクトに「歩いてぶつかった」場合には呼び出されません。その状況を処理したい場合は、Trigger Colliderを使用してください。

Particles

最後に、Particle SystemのCollisionおよびSend Collision Messagesが有効になっていることを前提として、OnPlayerParticleCollisionを使用してパーティクルがプレイヤーと衝突した時を検知できます。

This Particle System has the Collision module turned on, is set to 'World' and '3D' modes, with 'Send Collision Messages' turned on.

Udon example sceneでは、プレイヤーの衝突を検知する3つの方法すべてを使用するデモンストレーションを行っています。

Udon Example Sceneを確認して、これらのイベントの使用方法をご覧ください。

最終更新: