비트 마스크를 이용한 레이어 포함 여부 확인
본문 로딩 중...
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);
}
}
}
}
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
Develog는 단순히 글을 쓰는 공간이 아닙니다. 성장의 과정을 기록하고, 그 기록으로 나를 증명하며 원하는 기회를 얻는 곳이길 바랐습니다. 누군가의 꿈으로 향하는 중간다리가 되는 것, 그것이 Develog를 만든 이유입니다.

게임업계 취업을 준비하다 보면 조금 불편한 현실을 마주하게 됩니다. 게임회사에 들어가고 싶은 사람은 많습니다. 특히 신입 채용은 더 그렇습니다. 공고 하나에 많은 지원자가 몰리고, 회사 입장에서는 비슷한 조건의 지원자 가운데 사람을 선택할 수 있습니다. 그래서 다른 산업에서 흔히 이야기하는 “처음부터 연봉을 낮춰 부르지 마세요.” “적극적으로 협상하세요.”

우리들의 게임 발매 이야기
Develog는 단순히 글을 쓰는 공간이 아닙니다. 성장의 과정을 기록하고, 그 기록으로 나를 증명하며 원하는 기회를 얻는 곳이길 바랐습니다. 누군가의 꿈으로 향하는 중간다리가 되는 것, 그것이 Develog를 만든 이유입니다.


게임업계 취업을 준비하다 보면 조금 불편한 현실을 마주하게 됩니다. 게임회사에 들어가고 싶은 사람은 많습니다. 특히 신입 채용은 더 그렇습니다. 공고 하나에 많은 지원자가 몰리고, 회사 입장에서는 비슷한 조건의 지원자 가운데 사람을 선택할 수 있습니다. 그래서 다른 산업에서 흔히 이야기하는 “처음부터 연봉을 낮춰 부르지 마세요.” “적극적으로 협상하세요.”
