Collision은 오브젝트간의 충돌을 검사하기 위해 사용한다
Collision은 Collider 컴포넌트와 RigidBody 컴포넌트를 이용해 Collider간의 충돌을 검사한다.
충돌할 오브젝트들 중 최소 하나는 rigidbody를 가져야 한다.
Collider은 대부분 캡슐, 박스, 구 등의 정해진 모양을 캐릭터에 추가해 사용하는데, 이 이유는 메쉬 자체를 콜라이더로 하면 메쉬의 모양이 단순하지 않을 경우 부하가 발생할 가능성이 높고 메쉬는 애니메이션에 따라 모양이나 위치가 바뀌기 때문에 Collider Component를 사용하여 Collision검사를 한다.
isKinematic을 사용하면 유니티의 물리 엔진 적용을 무시한다.
Freeze Rotation을 사용하면 회전을 막을 수 있다.
OnCollisionTrigger을 Collider끼리 충돌 시 통해 충돌 시 호출할 기능을 구현할 수 있다.
부딪힌 물체에 대한 정보를 매개변수로 갖는다.
RaycastHit hit;
//int mask = 1 << 8 | 1 << 9;
int mask = LayerMask.GetMask("Wall") | LayerMask.GetMask("Enemy");
if (Physics.Raycast(ray, out hit, 100.0f, mask))
{
Debug.Log($"picking {hit.collider.gameObject.name}");
}