Collision (충돌):
OnCollisionEnter 이벤트 함수가 호출됩니다.Trigger (트리거):
OnTriggerEnter 함수가 호출됩니다.OnCollisionEnter 이벤트가 호출되려면 다음 조건을 충족해야 합니다:
Rigidbody 필요:
IsKinematic = false).Collider 필요:
IsTrigger = false).OnTriggerEnter 이벤트가 호출되려면 다음 조건을 충족해야 합니다:
Rigidbody 필요:
Collider 필요:
IsTrigger = true).| 기능 | Collision | Trigger |
|---|---|---|
| 목적 | 물리적인 충돌 처리 | 충돌 범위 진입 여부 확인 |
| 이벤트 함수 | OnCollisionEnter | OnTriggerEnter |
| 필요 조건 | Rigidbody가 있고, IsTrigger는 꺼짐 | Rigidbody가 있고, IsTrigger는 켜짐 |
| 물리 연산 | 실제 물리적 반응 처리 (예: 튕김) | 물리적 반응 없음 |
private void OnCollisionEnter(Collision collision)
{
Debug.Log(collision.gameObject.name);
}
OnCollisionEnter 함수:
collision에 충돌에 대한 정보가 담깁니다.매개변수 collision:
Collision 타입의 객체로, 충돌과 관련된 정보를 제공합니다.collision.gameObject: 충돌한 객체를 나타내는 GameObject.collision.collider: 충돌한 객체의 Collider.collision.rigidbody: 충돌한 객체의 Rigidbody.collision.relativeVelocity: 상대 속도.collision.transform: 충돌한 객체의 Transform.Debug.Log(collision.gameObject.name);
private void OnTriggerEnter(Collider other)
{
Debug.Log(other.gameObject.name);
}
OnTriggerEnter 함수:
매개변수 other:
Collider 타입의 객체로, 범위에 진입한 객체의 정보를 제공합니다.other.gameObject: 범위에 진입한 객체를 나타내는 GameObject.other.transform: 범위에 진입한 객체의 Transform.Debug.Log(other.gameObject.name);
OnCollisionEnter 함수 조건:IsKinematic = false이어야 함.IsTrigger = false이어야 함.OnTriggerEnter 함수 조건:IsKinematic 상태는 상관없음.IsTrigger = true이어야 함.Collision: FPS 게임에서 총알 충돌 처리
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Enemy"))
{
// 적 체력 감소 로직
collision.gameObject.GetComponent<Enemy>().TakeDamage(10);
}
}
Trigger: 몬스터와 칼의 충돌 처리
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Monster"))
{
// 몬스터 체력 감소 로직
other.gameObject.GetComponent<Monster>().TakeDamage(15);
}
}