LayerMask 활용하기

2024. 2. 13. 16:05·Unity
반응형

유니티에서 레이어 마스크는 특정 레이어에만 영향을 미치는 코드를 작성하는 데 필수적인 도구입니다. 이 글에서는 레이어 마스크의 내장 메서드를 활용하여 코드를 더욱 효율적이고 명확하게 작성하는 방법을 설명합니다.

 

1. 레이어 마스크 기초

  • 레이어 마스크는 32비트 정수 값으로, 각 비트가 하나의 레이어에 해당합니다.
  • 특정 레이어에 대한 비트를 1로 설정하면 해당 레이어가 마스크에 포함됩니다.
  • 여러 레이어를 포함하려면 해당 레이어에 대한 비트를 OR 연산하여 마스크를 생성합니다.

2. 내장 메서드

  • LayerMask.NameToLayer: 레이어 이름을 사용하여 레이어 인덱스를 얻습니다.
  • LayerMask.GetMask: 레이어 이름 목록을 사용하여 레이어 마스크를 생성합니다.
  • LayerMask.GetMask(string): 단일 레이어 이름을 사용하여 레이어 마스크를 생성합니다.
  • LayerMask.IsValidLayerMask: 레이어 마스크가 유효한지 확인합니다.
  • LayerMask.LayerToMask: 레이어 인덱스를 사용하여 레이어 마스크를 생성합니다.
  • LayerMask.SelectLayer: 레이어 마스크에서 특정 레이어를 선택합니다.

3. 활용 예시

// 레이어 이름으로 레이어 마스크 생성
int layerIndex = LayerMask.NameToLayer("Player");
LayerMask playerMask = LayerMask.GetMask(layerIndex);

// 레이어 이름 목록으로 레이어 마스크 생성
string[] layerNames = { "Player", "Enemy" };
LayerMask playerEnemyMask = LayerMask.GetMask(layerNames);

// 레이어 마스크 유효성 검사
if (LayerMask.IsValidLayerMask(playerEnemyMask))
{
    // ...
}

// 레이어 인덱스로 레이어 마스크 생성
LayerMask layerMask = LayerMask.LayerToMask(10); // 10번째 레이어

// 특정 레이어 선택
LayerMask selectedMask = LayerMask.SelectLayer(playerMask, 4); // 4번째 레이어 선택

// 레이어 마스크에 포함된 레이어 확인
if ((playerMask & (1 << layerIndex)) != 0)
{
    // ...
}

 

4. 활용 팁

  • 레이어 이름 대신 레이어 인덱스를 사용하면 코드 성능을 향상시킬 수 있습니다.
  • 레이어 마스크를 직접 생성하는 대신 LayerMask.GetMask 메서드를 사용하여 코드 가독성을 높일 수 있습니다.
  • LayerMask.IsValidLayerMask 메서드를 사용하여 유효하지 않은 레이어 마스크를 사용하는 오류를 방지할 수 있습니다.
저작자표시 비영리 변경금지 (새창열림)

'Unity' 카테고리의 다른 글

Rigidbody에서 오브젝트에 힘을 가할 때 사용되는 ForceMode  (0) 2024.02.21
Unity에서 UnityWebRequest를 이용해 웹 접속하는 방법  (0) 2024.02.16
Unity 카메라의 뷰포트를 설정하여 원하는 시야를 만들자  (0) 2023.12.14
Camera : Orthographic과 Perspective  (0) 2023.12.13
Animator State Transition : Has Exit Time  (0) 2023.12.12
'Unity' 카테고리의 다른 글
  • Rigidbody에서 오브젝트에 힘을 가할 때 사용되는 ForceMode
  • Unity에서 UnityWebRequest를 이용해 웹 접속하는 방법
  • Unity 카메라의 뷰포트를 설정하여 원하는 시야를 만들자
  • Camera : Orthographic과 Perspective
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    리스트
    카페24리뷰
    스마트스토어리뷰
    쇼핑몰리뷰
    rtsp
    learntocode
    리뷰이관
    리뷰관리
    codingcommunity
    유니티
    devlife
    스크립트 실행 순서
    긴유통기한우유
    믈레코비타멸균우유
    라떼우유
    셀레니움
    unity
    programmerlife
    list
    상품 리뷰 크롤링
    C#
    스크립트 실행
    programming101
    카페24리뷰이관
    파이썬
    cv2
    ipcamera
    appdevelopment
    codingtips
    Python
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
LayerMask 활용하기
상단으로

티스토리툴바