Unity 레이어 마스크 설정 가이드

이 문서에서는 Unity에서 레이어 마스크를 설정하고 사용하는 방법을 간단히 설명합니다. 레이어 마스크는 게임 오브젝트를 정리하고 물리 상호작용을 관리하는 데 매우 유용합니다.

레이어 마스크란?

레이어 마스크는 특정 레이어의 상태를 나타내는 이진 값입니다. 게임에서 물체의 상호작용을 정의할 때 매우 중요한 역할을 합니다. 예를 들어, 총알이 특정 레이어의 오브젝트와 만나는지 확인할 때 사용할 수 있습니다.

레이어 마스크 설정하기

1. Unity 에디터에서 레이어 마스크 설정

Unity에서는 LayerMask 클래스를 사용하여 레이어 마스크를 설정할 수 있습니다. 아래는 이를 설정하는 방법의 코드 예시입니다.

using UnityEngine;

public class LayerMaskExample : MonoBehaviour
{
    [SerializeField] private LayerMask layermask;
}

[SerializeField] 속성을 사용하면 스크립트가 붙어 있는 오브젝트의 인스펙터 창에서 레이어 마스크를 설정할 수 있는 옵션이 제공됩니다.

2. 런타임 시 레이어 전환

런타임에 특정 레이어를 레이어 마스크로 변환하려면 아래와 같은 방식을 사용할 수 있습니다. 이 방법은 바이너리 왼쪽 시프트 연산자를 사용하여 1을 왼쪽으로 이동시키는 방식입니다.

using UnityEngine;

public class LayerExample : MonoBehaviour
{
    [SerializeField] private int layer = 10;
    private int layerAsLayerMask;

    private void Start()
    {
        layerAsLayerMask = (1 << layer);
    }
}

위의 코드에서 layer 변수에 저장된 값에 따라 해당 레이어를 레이어 마스크로 변환합니다.

레이어 마스크 사용 예시

용도 설명
특정 레이어 객체 찾기 Physics.Raycast를 사용하여 특정 레이어의 오브젝트에 레이저를 쏘는 기능 구현
충돌 처리 OnCollisionEnter에서 특정 레이어와의 충돌만 감지하기
UI 요소 관리 UI와 비 UI 요소의 레이어를 분리하여 각기 다른 상호작용 처리
캐릭터 상호작용 캐릭터가 적과 상호작용할 때 특정 레이어로 설정된 적만 확인할 수 있도록 필터링

추가 리소스

레이어 마스크에 대한 더 많은 정보는 Unity 공식 문서와 포럼에서 찾을 수 있습니다. 내용을 바탕으로 다른 기능이나 설정도 적용해보세요.

결론

레이어 마스크를 활용하면 게임에서 물리적 및 논리적 상호작용을 더욱 세밀하게 조정할 수 있습니다. 다양한 기능을 시도해 보면서 Unity의 가능성을 탐험해 보세요!