Unity:当たり判定スクリプト

Unity

コリジョン(OnCollisionEnter2D)とトリガー(OnTriggerEnter2D)

CollisionTest

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CollisionTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

	private void OnCollisionEnter2D(Collision2D collision)
	{
		Debug.Log("当たった!");
	}

	private void OnTriggerEnter2D(Collider2D collision)
	{
		Debug.Log("トリガー");
	}

}

タグで当たり判定する例

以下はGroundというタグがつけられたオブジェクトとぶつかったときに該当オブジェクトが消える例。

CollisionTest

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CollisionTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

	private void OnCollisionEnter2D(Collision2D collision)
	{
		Debug.Log("当たった!");
		if (collision.gameObject.CompareTag("Ground"))
		{
			Destroy(gameObject);
		}
	}

}

当たった瞬間に消したくない場合は

Destroy(gameObject, 0.5f);    // 0.5秒後に消去

などとすれば良い。
Destroyの第2引数は、秒単位でfloat型で指定する。

ぶつかったら音を鳴らす

CollisionTest

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CollisionTest : MonoBehaviour
{
	public AudioClip se;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

	private void OnCollisionEnter2D(Collision2D collision)
	{
		Debug.Log("当たった!");
		// 音を鳴らす
		AudioSource.PlayClipAtPoint(se, new Vector3(0,0,-10f));
		// Groundタグとの当たり判定
		if (collision.gameObject.CompareTag("Ground"))
		{
			Destroy(gameObject, 0.5f);
		}
	}

	private void OnTriggerEnter2D(Collider2D collision)
	{
		Debug.Log("トリガー");
	}
}

コメント