パーティクル(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でのパーティクルの当たり判定についてはなかなか情報がなかったので、具体的な手順が分かりやすく説明されていて助かりました。実際に試してみます!ありがとうございます!
お役に立てて良かったです!