コリジョン(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("トリガー");
}
}
コメント