충돌
- 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()를 사용하자!
충돌 조건
다음 조건을 만족해야지 충돌이 일어난다.
- 두 오브젝트가 Collider 가 있어야 충돌 가능
- 두 오브젝트 중 하나는 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 |