【Unity】パーティクル(Particle)の当たり判定のやり方
パーティクル(Particle)との当たり判定のやり方は、普通のGameObjectとは違うので注意が必要
そのやり方を紹介します。
完成動作
今回は例として、パーティクルに当たるたびに、ランダムにGameObjectの色が変わるようにしてみました。
作り方(動画)
作り方(ブログ)
当たり判定を行うGameObjectを作成
1.例としてCylinderを作成
2.例としてTransformは以下のようにした。
パーティクル(Particle)を作成
1."Particle System"を作成
※以下のようにパーティクルがCylinderオブジェクトに当たるような位置に適宜移動させる。
これだけだと、パーティクルは他のGameObjectを貫通してしまうので、当たり判定は行われない。
2."Particle System"を選択し、Inspectorタブの"Particle System"コンポーネントを以下のように設定
2-1."Collision"にチェック
2-2."Collision"の中のTypeを"World"に変更
ここまでで、まずは、パーティクルが他のGameObjectに当たると跳ね返るようになる。
2-3."Send Collision Messages"にチェックを入れる。
これで、以下のスクリプト内で作成する"OnParticleCollision"関数が呼ばれるようになる。
当たり判定時の処理を行うスクリプトを作成
1.ParticleCollision.csという名前のスクリプトを作成して、以下のコードを記載する。
※当たり判定時に"OnParticleCollision"関数が呼ばれる。
using UnityEngine;
public class ParticleCollision : MonoBehaviour
{
/// <summary>
/// パーティクルが他のGameObject(Collider)に当たると呼び出される
/// </summary>
/// <param name="other"></param>
private void OnParticleCollision(GameObject other)
{
// 当たった相手の色をランダムに変える
other.gameObject.GetComponent<Renderer>().material.color = Random.ColorHSV();
}
}
スクリプトをパーティクルにアタッチ
1.ParticleCollision.csを"Particle System"にアタッチ
完成
これでゲームを開始すると、パーティクルとCylinderの当たり判定が行われて、Cylinderの色が当たるたびに変わる。
ディスカッション
コメント一覧
まだ、コメントがありません