비트 마스크를 이용한 레이어 포함 여부 확인
본문 로딩 중...
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
using UnityEngine;
using UnityEngine.AI;
public class TEST : MonoBehaviour
{
[SerializeField] NavMeshAgent agent;
[SerializeField] Camera mainCamera;
[SerializeField] LayerMask groundMask;
void Awake()
{
agent = GetComponent<NavMeshAgent>();
mainCamera = Camera.main;
}
void Update()
{
if (!Input.GetMouseButtonDown(1))
{
return;
}
Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out RaycastHit hit, 200f))
{
LayerMask hitLayer = hit.collider.gameObject.layer;
if (((1 << hitLayer) & groundMask) != 0)
// gameObject.layer는 레이어 인덱스(0~31)이며, 1 << hitLayer는 해당 비트만 1인 비트 마스크를 생성한다.
// 비트 AND(&) 연산으로 생성한 마스크와 groundMask에 공통으로 설정된 비트가 있는지 확인한다.
// 결과가 0이 아니면 충돌한 GameObject의 레이어가 groundMask에 포함되어 있다는 뜻이다.
{
agent.SetDestination(hit.point);
}
}
}
}

우리들의 게임 발매 이야기

안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다


안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다
