유니티
충돌
잼잼재미
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()를 사용하자!
충돌 조건
다음 조건을 만족해야지 충돌이 일어난다.
- 두 오브젝트가 Collider 가 있어야 충돌 가능
- 두 오브젝트 중 하나는 Rigidbody가 있어야 함 (보통 움직이는 쪽에 Rigidbody)