Unity 레이어 사용법
Unity에서 레이어를 활용하는 방법에 대한 간단한 가이드입니다. 레이어는 프로젝트와 워크플로우를 최적화할 수 있는 유용한 기능으로, 다양한 게임플레이 기능에서 중요한 역할을 합니다.
레이어의 용도
- 레이어 기반 렌더링: 특정 레이어의 오브젝트만 화면에 렌더링합니다.
- 레이어 기반 충돌: 충돌 체크를 특정 레이어의 오브젝트에 대해서만 수행합니다.
카메라의 컬링 마스크 사용
컬링 마스크를 사용하면 선택한 특정 레이어의 오브젝트만 렌더링할 수 있습니다. 사용 방법은 다음과 같습니다.
- 사용할 카메라를 선택합니다.
- 인스펙터 창에서 Culling Mask 드롭다운을 선택합니다.
- 원하는 레이어의 체크박스를 선택하거나 해제하여 렌더링 여부를 결정합니다.
참고: UI 요소와 스크린 공간 캔버스의 자식 오브젝트는 항상 렌더링됩니다.
레이캐스트에서 레이어 사용하기
레이캐스트는 특정 레이어와 상호작용하도록 설정할 수 있습니다. 레이캐스트가 오브젝트를 무시하도록 하려면, 해당 오브젝트를 '무시 레이캐스트 레이어'에 할당하거나 LayerMask
를 레이캐스트 API 호출에 전달하면 됩니다.
기본 사용 예제
레이어 8에 레이를 캐스트하려면 아래의 코드 샘플을 참조하세요.
int layerMask = 1 << 8;
// 레이로 레이어 8에 있는 오브젝트와 충돌하는지 확인합니다.
if (Physics.Raycast(transform.position, Vector3.forward, Mathf.Infinity, layerMask))
{
Debug.Log("The ray hit the player");
}
반대 경우
레이어 8을 제외한 모든 레이어와 충돌하도록 하려면 다음과 같이 코드를 수정합니다.
void Update()
{
int layerMask = 1 << 8;
// 레이어 8을 제외한 모든 레이어와 충돌합니다.
layerMask = ~layerMask;
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity, layerMask))
{
Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * hit.distance, Color.yellow);
Debug.Log("Did Hit");
}
else
{
Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 1000, Color.white);
Debug.Log("Did not Hit");
}
}
참고: 레이어 마스크를 Raycast
함수에 전달하지 않으면 Ignore Raycast
레이어를 사용하는 콜라이더가 무시됩니다.
요약
레이어를 활용하여 렌더링 및 충돌을 최적화함으로써 게임 개발의 효율성을 높일 수 있습니다. 이 문서에서는 레이어의 기본적인 사용법과 레이캐스트에 레이어를 적용하는 방법을 다뤘습니다. Unity의 강력한 레이어 기능을 활용하여 더욱 풍부한 게임플레이를 개발해 보세요.
지금까지 Unity의 레이어 기능에 대한 간단한 설명과 활용 예제를 소개했습니다. 추가적인 질문이 있다면 언제든지 문의해 주세요!