유니티

충돌

잼잼재미 2023. 11. 24. 16:06

충돌


  • 2D 일 경우, OnTriggerEnter2D, OnTriggerStay2D,  OnTriggerExit2D 사용
  • 3D 일 경우, OnTriggerEnter, OnTriggerStay,  OnTriggerExit 사용

 

 

Trigger 충돌


 

// 충돌 시작할 때 실행
private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.name == "Rocket")
    {
        Debug.Log("Launch");
    }
}

// 충돌중일 때 실행
private void OnTriggerStay2D(Collider2D collision)
{
    if (collision.name == "Rocket")
    {
        Debug.Log("Launch");
    }
}

// 충돌 끝날 때 실행
private void OnTriggerExit2D(Collider2D collision)
{
    if (collision.name == "Rocket")
    {
        Debug.Log("Launch");
    }
}

 

 

Collision 충돌


// 충돌 시작할 때 실행
private void  OnCollisionEnter2D(Collider2D collision)
{
    if (collision.name == "Rocket")
    {
        Debug.Log("Launch");
    }
}

// 충돌중일 때 실행
private void  OnCollisionStay2D(Collider2D collision)
{
    if (collision.name == "Rocket")
    {
        Debug.Log("Launch");
    }
}

// 충돌 끝날 때 실행
private void  OnCollisionExit2D(Collider2D collision)
{
    if (collision.name == "Rocket")
    {
        Debug.Log("Launch");
    }
}

 

 

충돌체 판별


// 충돌체 이름으로 판별
private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.name == "Rocket")
    {
        Debug.Log("Launch");
    }
}


// 충돌체 tag로 판별
private void OnTriggerEnter2D(Collider2D collision)
{
    // 1.
    if (collision.tag == "Enemy")
    {
        Debug.Log("Die");
    }
    
    // 2.    
    if (collision.tag.Equals("Enemy"))
    {
        Debug.Log("Die");
    }
    
    // 3.
    if (collision.CompareTag("Enemy"))
    {
    	Debug.Log("Die");
    }
}

 

*  객체의 tag 프로퍼티를 호출하는 것은 추가 메모리를 할당하며 복사를 하기때문에 CompareTag()를 사용하자!

 

 

충돌 조건


다음 조건을 만족해야지 충돌이 일어난다.

  1. 두 오브젝트가 Collider 가 있어야 충돌 가능
  2. 두 오브젝트 중 하나는 Rigidbody가 있어야 함 (보통 움직이는 쪽에 Rigidbody)

'유니티' 카테고리의 다른 글

Canvas  (1) 2023.11.24
Text (TextMeshPro)  (0) 2023.11.24
Rigidbody와 Collider  (0) 2023.11.24
GetComponent 컴포넌트 가져오기  (1) 2023.11.24
유니티란?  (0) 2023.11.24