충돌 (Collision)
< 유니티 충돌 메시지>
private void OnCollisionEnter(Collision collision) // 3D 물리 충돌
{
// 충돌 진입시 호출
Debug.Log($"{collision.gameObject.name} 랑 충돌을 시작함"); // 총을 맞았을때 대미지 입을때
}
private void OnCollisionStay(Collision collision)
{
// 충돌중 호출
Debug.Log($"{collision.gameObject.name} 랑 충돌중"); // 범위공격 지속 대미지
}
private void OnCollisionExit(Collision collision)
{
// 충돌 해제시 호출
Debug.Log($"{collision.gameObject.name} 랑 충돌 끝남");
}
트리거 ( Trigger )
// Box Collider 안에 Is Trigger 박스를 체크시 가능 -> 트리거로 사용하겠다
private void OnTriggerEnter(Collider other)
{
Debug.Log("트리거 Enter");
}
private void OnTriggerStay(Collider other)
{
Debug.Log("트리거 stay");
}
private void OnTriggerExit(Collider other)
{
Debug.Log("트리거 Exit");
}
레이어기반 충돌 & 트리거 감지
충돌체 & 트리거 종류
<충돌체 종류>
(1) 정적 충돌체 (Static Collider)
Rigidbody가 없는 충돌체, 외부에 힘에 움직이지 않음
절대로 움직이지 않는 지형, 구성요소에 주로 사용
(2) 리지드바디 충돌체 (Rigidbody Collider)
Rigidbody가 있는 충돌체, 외부에 힘을 받아 움직임
충돌하여 힘을 받아 움직이는 물체에 사용
(3) 키네마틱 충돌체 (Kinematic Collider)
Kinematic Rigidbody가 있는 충돌체, 외부의 힘에 반응하지 않음
움직이지만 외부 충격에는 밀리지 않는 물체에 사용
Kinematic 상태를 활성화/비활성화 하여 움직임 여부를 설정하는 경우에도 사용
<충돌체 & 트리거 상호작용 매트릭스>
충돌시 충돌 메시지가 전송
SC RC KC ST RT KT
SC O
RC O O O
KC O
ST
RT
KT
트리거시 트리거 메시지가 전송
SC RC KC ST RT KT
SC O O
RC O O O
KC O O O
ST O O O O
RT O O O O O O
KT O O O O O O