衝突した座標を取得

Unity

衝突箇所にエフェクトを出したい場合にコライダーのどのあたりに衝突したかを取得する必要があるのでその時に役立つメモです。

自身のコライダから衝突した座標を取得

    void OnCollisionEnter(Collision collision)
    {
        foreach(ContactPoint contact in collision.contacts)
        {
            Debug.Log(contact.point);
        }
    }
ヒットした箇所にcubeを生成しています。

パーティクルの粒子が衝突した座標を取得

    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

コメント

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