*** 개발 중 공부하게 된 것들을 메모하는 페이지입니다. 오류가 많을 수 있습니다. ***
1. Raycast란?
Raycast란 "레이저를 발사시켜서 충돌을 감지하는" 것으로 이해할 수 있다. Raycast script를 가진 Object가 '원점'이 되고, 프로그래머가 설정한 '방향'으로 레이저를 쏘면, 레이저가 '정해진 거리만큼' 날아가다가 콜라이더를 가진 오브젝트를 만나면 '충돌을 감지'하는 개념이다.
2. 공식 문서
2-1. origin
Raycast script를 붙여 놓은 오브젝트. 오브젝트에 콜라이더가 붙어 있는 경우에는 제거하거나 LayerMask를 이용해서 원점 Object가 인식되지 않도로 조치를 취해야 한다.
2-2. direction
(가상의) 레이저가 날아갈 방향. 방향을 제대로 설정해 주지 않으면 충돌 검사를 하기 원하는 대상과 충돌하지 않을 수 있다.
2-3. maxDistance
2-4. layerMask
32bit int형. 비트 플래그로 비트로 구분됨. (=32개까지만 만들 수 있음) : 비트마스킹? 아직 명확히 이해되지 않음.
Raycasting을 할 대상 지정하는 역할.
3. 사용례
Raycast hit;
if(Physics.Raycast(transform.position, tansform.forward, out hit, 100.0f){/.../}
=> Raycasting으로 충돌 감지 시 충돌 정보가 hit에 저장됨
4. Ray 활용법
Ray : 직선의 시작점, 방향점을 가지고 있는 구조체.
4-1. 직접 생성하기
Ray ray = new Ray(transform.position, transform.forward);
4-2. 마우스 위치로부터 생성하기(ScreenPointToRay)
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
4-3. 카메라 뷰포트에서 시작 시(ViewportPointToRay)
Ray ray = Camera.main.ViewportPointToRay(new Vector3 (/.../));
'게임개발' 카테고리의 다른 글
[Unity] Transform.SetParent (0) | 2023.01.19 |
---|---|
[Unity] 추적 카메라 (0) | 2023.01.03 |
[Unity] UI_Canvas (0) | 2023.01.03 |
[Unity] Collider (0) | 2023.01.01 |
[문제] Transparency Sort Axis가 Play mode 실행 시 원래대로 돌아가는 문제 (0) | 2022.09.15 |