パーティクルの衝突判定で遊んでみる

この記事は約3分で読めます。

たとえば、銃と盾で合わせると楽しいかもしれないアバターギミック。

2人以上での利用を想定していますが、それぞれに必要な設定がなされていればアバター同士の制約は少ないです。

注意点(攻撃用パーティクルに必要な設定)

攻撃用パーティクルと防御の両方に衝突判定の設定が必要です。
衝突判定のないパーティクルでは効果が現れません。

攻撃に使用するパーティクルには衝突判定が必要です。
Unityを起動し、Particle SystemのCollision設定を確認してください。

設定さえなされていれば有効に機能します。パブリックアバターやワールドギミックでも問題ありません。
パブリックアバターの場合、立っても落ちない床、突進してもすり抜けない壁、飛ぼうとすると頭をぶつける天井などにパーティクルを発射してみることで衝突判定が設定されているか判別できます。

Collision設定(つまり当たり判定)のないパーティクルは以下の設定を行っても当たり判定が発生せず、貫通するので注意してください。

アバターへの当たり判定の実装は簡単

アバターへ衝突判定を仕込むこと自体は難しくありません。盾っぽく使えるオブジェクトが何かあれば利用できます。
たとえば以下のガラス球が一例。

本来はアバターを中に入れて遊ぶのは想定外と思われるが、楽しいので使用中。

ガラス球向けガラスシェーダー Ver2.0 - お休みさんの作ったもの - BOOTH
球体などに適用することでガラス球のような見た目にできるシェーダーです。 ●ゆがみや反射の度合いを調節可能 ●球面へのテクスチャやノーマルマップを適用可能 ●ワールドのライティングにある程度追従するMatcapを使用可能 VRChatでの使用を想定し、2018.4.20f1で動作確認しています。

アバターに当たり判定を追加する(防御用)

アバターに当たり判定を設定するにはコライダーを使用します。

Unityで当たり判定を仕込みたいアバターのプロジェクトとシーンを開きます。

盾として使用したいGameObjectをHierarchyから選択し、Add ComponentからColliderを追加します。

VRChat SDKの仕様上、使用できるColliderは次の2つのいずれかに制限されています。

  • Sphere Collider。指定した場所を中心に球形にコライダーを張ります。
  • Box Collider。指定した場所を中心に直方体(立方体を含む)にコライダーを張ります。

メッシュの形状に連動してコライダーを張ることができるMesh Colliderはアバターでは使用できないので注意してください。

Colliderを追加したら、適当にパラメーターを設定します。

  • Center。コライダーの中心位置を指定します。
  • Radius。Sphere Colliderでのみ有効です。各軸方向への半径を指定します。
  • Size。Box Colliderでのみ有効です。各軸方向の辺の長さを指定します。

パーティクルにはある程度の大きさがあるため、貫通を防ぐためには盾と見做すオブジェクトよりも少し余裕を持って大きめに設定することを推奨しています。それでも大きすぎるパーティクルは見た目上貫通する可能性があることに注意してください。

以上のパラメーターを設定したらアバターへの衝突判定の設定は終了です。

Colliderの中で衝突判定のあるパーティクルを撃ったらどうなる?

Colliderは指定範囲内をすべて満たす形で当たり判定を設定します。
つまり、Colliderの中で衝突判定のあるパーティクルを撃った場合はゼロ距離で当たり判定が発生します。

実用例

Collision判定の設定されたParticle Systemであればアバターギミックでもワールドギミックでも有効です。
このように頑丈な球体に覆われたアバターとして遊ぶことができます。魔法攻撃(≒衝突判定のあるパーティクル)には強くなります。

ただし、アバターに設定されたColliderは他プレイヤーの進入を防止する機能は持ち合わせていません。
剣や槍のような物理攻撃には弱いことは念頭に置いてください。

タイトルとURLをコピーしました