【Unity】パーティクル(Particle)の当たり判定のやり方

2021年7月17日Unity

スポンサーリンク

パーティクル(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の色が当たるたびに変わる。

Unity

Posted by ton