유니티에서는 Layer 관리를 인스펙터 창에서 한다.
기본적으로 Default, Transparent FX, Player 등의 기본 레이어가 있으며
사용자가 추가적으로 생성할 수 있다.
이 레이어들은 Camera, Phisycs 등에서 Mask 형식으로 주로 사용 되어진다.
Camera 에서는 culling 설정을 하여 해당 레이어를 렌더링 해서 화면에 보여줄지 말지를 설정 할 수 있으며
Phisycs 에서는 충돌체크시에 해당 레이어의 Collider 들을 계산할지 말지를 설정 할 수 있다.
ex1)
int layerMask = (-1) - (1 << LayerMask.NameToLayer("Player")); // Everything에서 Player 레이어만 제외하고 충돌 체크함
Physics.Raycast (transform.position, transform.TransformDirection (Vector3.forward), hit, Mathf.Infinity, layerMask);
ex2)
int layerMask = (-1) - (1 << LayerMask.NameToLayer("Player"));
RaycastHit hit;
Ray ray = Camera.mainCamera.ScreenPointToRay( screenPos ); // screenPos는 화면상 클릭 좌표
bool result = Physics.Raycast( ray, out hit, 10000.0f, layerMask );
레퍼런스에는 충돌을 제외할 레이어 마스크 값이라고 적혀 있지만, 실제는 충돌 체크할 레이어 마스크를 넣어야 함.
'Unity3D' 카테고리의 다른 글
Sorting Layer 사용하기 (0) | 2015.07.20 |
---|---|
Player Settings (0) | 2013.01.15 |
간단한 Nav Mesh 예제 (0) | 2012.11.21 |
런타임 중 텍스쳐 교체 (0) | 2012.11.20 |
상체 애니메이션 덧붙이기(AddMixingTransform) (2) | 2012.11.16 |