본문 바로가기

Study/Unity

Unity Collision2D

매개변수 Collision2D collision

현재 컴포넌트를 가지고 있는 오브젝트에 부딪힌 오브젝트 정보 

 

 

물리적인 충돌이 일어나고 호출되는 이벤트함수

-아이템을 획득하거나 적을 공격하거나 함정을 밟아 장애물이 튀어나온다 등

 

OnCollisionEnter2D 두 오브젝트가 충돌하는 순간 1회 호출

 

OnCollisionStay2D 충돌 직후 맞닿아 있는 동안 매 프레임 호출

 

OnCollisionExit2D 두 오브젝트가 떨어져서 충돌이 종료되는 순간 1회 호출

public class collision : MonoBehaviour
{
    [SerializeField] private Color color;
  

    private SpriteRenderer renderer;


    private void Awake()
    {
        renderer = GetComponent<SpriteRenderer>();
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
        string name = collision.gameObject.name;
        Debug.Log("collision name:" + name);

        renderer.color = color;
    }

    private void OnCollisionStay2D(Collision2D collision)
    {
        //Debug.Log(gameObject.name + " : OnCollisionStay2D 실행");
    }
    private void OnCollisionExit2D(Collision2D collision)
    {
        renderer.color = Color.white;
    }
}

 

물리적인 충돌 없이 이벤트 함수가 호출

 

OnTriggerEnter2D 두 오브젝트가 충돌하는 순간 1회 호출

 

OnTriggerStay2D 충돌 직후 맞닿아 있는 동안 매 프레임 호출

 

OnTriggerExit2D 두 오브젝트가 떨어져서 충돌이 종료되는 순간 1회 호출

 

public class Trigger : MonoBehaviour
{

    [SerializeField]
    private GameObject moveObject;
    [SerializeField]
    private Vector3 moveDirection;
    private float moveSpeed = 5.0f;

    private void Awake()
    {
        
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        // moveObject 색상을 검은색으로 변경
        moveObject.GetComponent<SpriteRenderer>().color = Color.black;
    }

    private void OnTriggerStay2D(Collider2D collision)
    {
        // 오브젝트 방향 이동
        moveObject.transform.position += moveDirection * moveSpeed * Time.deltaTime;
    }
    private void OnTriggerExit2D(Collider2D collision)
    {
        moveObject.GetComponent<SpriteRenderer>().color = Color.white;
        moveObject.transform.position = new Vector3(0, 4, 0);
    }
}

 

 

'Study > Unity' 카테고리의 다른 글

Unity Instantiate Quaternion Euler  (0) 2021.07.15
Unity SerializeField  (0) 2021.07.15
[Unity Component] Rigidbody2D Collider2D  (0) 2021.07.14
Unity Time.deltaTime  (0) 2021.07.14
Unity 이벤트 함수  (0) 2021.07.13