1.메인카메라
- 메인카메라의 x축을 90도로 틀어주고 적당한 높이에서 아래를 수직으로 바라보도록 한다
- Projection을 Orthographic으로 주어 카메라가 비추는 방향을 사다리꼴모양이 아닌 직사각형 모양으로 비추도록 한다
2. 방해물과 타겟
- 방해물과 적이 될 타겟 오브젝트를 여러개 만들어 관리하기 쉽게 해주고
- 각각 Layer를 Obstacles와 Targets로 설정한다
3. 플레이어
- 컴포넌트로 리지드 바디를 추가해주고 회전을 프리징해준다 Freezing Rotation x,y,z, 체크
- 플레이어를 움직일 Player 스크립트, 플레이어의 시야를 나타내줄 FieldOfView 스크립트를 드래그 앤 드랍한다
3-1. 플레이어 이동
-Player 스크립트에서 플레이어가 키보드 상하좌우키로 움직이고 마우스커서의 방향을 바라보도록 코드를 구현한다
* viewCamera.ScreenToWorldPoint()로 Input.mousePosition을 월드좌표로 바꾸는 스킬
* rigid.MovePosition(현재위치 + 움직여줄위치 * 델타타임)으로 움직임 구현하는 스킬
3-2. 플레이어 시야각 구현
- FieldOfView 스크립트
- FieldOfViewEditor 스크립트
*Asset 폴더에 따로 Editor 폴더를 만들어서 FieldOfViewEditor라는 C#스크립트를 생성하여 씬뷰에서 시각적으로 확인할 수 있도록 커스텀에디터 활용
*OnEnable()은 하이라키창에서 FieldOfView스크립트를 가진 플레이어 오브젝트를 클릭했을때 활성화되는것
*void OnSceneGUI()는 커스텀에디터에서 기지모를 구현할때 쓰이는 함수이다 커스텀에디터를 쓰지 않는 경우 일반
스크립트에서는 void OnDrawGizmo() 함수를 통해 구현한다 둘다 같은 Handles구조를 사용하는 같은 함수이다
3-3 플레이어의 타겟 포착 구현
- FieldOfView 스크립트
- FieldOfViewEditor 스크립트
'Unity > Unity 기타' 카테고리의 다른 글
Unity3D- FieldOfView 시야구현(2) (0) | 2021.04.05 |
---|---|
Unity3D- DrawRay와 DrawLine 차이점 (0) | 2021.04.04 |
Unity - 임의의 원 범위안에서 스폰, 커스텀에디터, 부채꼴 충돌, 유용한 Mathf 함수 (0) | 2021.04.04 |
Unity3D - raycast 정리 (0) | 2021.03.29 |
Unity3D - nav Mesh Agent 컴포넌트 (0) | 2021.03.29 |