衝突箇所にエフェクトを出したい場合にコライダーのどのあたりに衝突したかを取得する必要があるのでその時に役立つメモです。
自身のコライダから衝突した座標を取得
void OnCollisionEnter(Collision collision) { foreach(ContactPoint contact in collision.contacts) { Debug.Log(contact.point); } }
パーティクルの粒子が衝突した座標を取得
private ParticleSystem particle; private List<ParticleCollisionEvent> collisionEvents; // パーティクル衝突に関する情報 void Start() { particle = GetComponent<ParticleSystem>(); collisionEvents = new List<ParticleCollisionEvent>(); } // パーティクルがヒットしたら呼ばれる void OnParticleCollision(GameObject other) { int numCollisionEvents = particle.GetCollisionEvents(other, collisionEvents); for(int i=0; i<numCollisionEvents; i++) { // 衝突座標 Debug.Log(collisionEvents[i].intersection); } }
参考
https://docs.unity3d.com/jp/530/ScriptReference/MonoBehaviour.OnParticleCollision.html
https://gametukurikata.com/effect/particlecollision
コメント