【Unity】Collisionクラス

UnityのCollisionクラスは、2つのColliderが衝突したときの情報を提供するためのクラスです。Collisionクラスは、OnCollisionEnter、OnCollisionStay、およびOnCollisionExitのUnityのメッセージ関数のパラメーターとして使用されます。

Collisionクラスには、衝突した2つのColliderの詳細情報が含まれています。これには、衝突した2つのオブジェクトのTransform、Rigidbody、Collider、接触点、法線ベクトル、速度などが含まれます。これらの情報を使用して、スクリプトで衝突に関する処理を行うことができます。

また、Collisionクラスには、IsTriggerプロパティがあります。このプロパティがtrueに設定されている場合、Collisionクラスはトリガー領域での衝突情報を提供するために使用されます。

例えば、以下のように衝突時にCollisionクラスを使用して衝突したオブジェクトの情報を取得することができます。

void OnCollisionEnter(Collision collision) 
{
    Debug.Log("衝突したオブジェクトの名前:" + collision.gameObject.name);
    Debug.Log("接触点の数:" + collision.contactCount);

    // サンプルのため、接触相手のゲームオブジェクトにGroundContollerスクリプトがアタッチされている前提とします(ない場合、nullエラーになります)
    GroundController groundController =collision.gameObject.GetComponent< GroundController >();

    Debug.Log(groundController.Hp);
    groundController.ShowHello();
}

接触相手のゲームオブジェクトにアタッチされているスクリプトサンプル

using UnityEngine;

public class GroundController : MonoBehaviour
{
    public int Hp { get; set; } = 199;

    public void ShowHello()
    {
        Debug.Log("グランドHello");
    }
}

Unity

Posted by hidepon