TIL
Start()와 Awake() 차이
Awake()와 Start()는 Initalization 구역으로 스크립트의 초기화에 이용되고 호출의 순서는 Awake()->Start()순이다. 둘의 차이는 Awake()는 모든 오브젝트가 초기화되고 호출되고, Start()는 스크립트 인스턴스가 활성화된 경우에만 호출된다.
오브젝트 초기화 -> Awake()호출 -> Start() 호출 -> 첫 번째 프레임 업데이트
조금 더 공부가 필요한 분야인거 같다.
유니티의 네비게이션 시스템에 관하여
- NavMesh
- Object
All, MeshRenderer, Terrains와 관련한 Object를 보여준다.
- Bake
NavMesh를 만들어주는 역할이다. NavMesh란 캐릭터가 길을 찾아서 이동할 수 있는 영역을 뜻한다. 장애물을 설정하고 싶으면 Object 탭에서 Object를 Navigation static으로 설정하면 된다. Agent의 radius와 height를 조절하거나 MaxSlope와 StepHeight을 조절하여 NavMesh의 범위를 조절할 수 있다.
- Area
Area 탭에서는 사용자가 필요한 NavigationMesh를 설정하고 그 구역을 지나가는 cost를 설정할 수 있다. Agent는 목표를 향해 갈 때 더 낮은 cost가 요구되는 길을 택할 것이다.
- Agents
Agent는 수직으로 서 있는 실린더에 의해 정의되며 실린더의 크기는 Radius 과 Height 프로퍼티에 의해 특정된다. 실린더의 모양은 다른 에이전트와 장애물간의 충돌 감지와 대응에 사용된다. 일종의 네비게이션의 collider라 생각하면 될 듯하다.
- NavMeshAgent
Agent는 내비게이션 메시 위에서 길을 찾아서 움직일 오브젝트를 의미한다.
- Base Offset
Base Offset은 길을 찾을 때 사용되는 충돌 실린더의 위치이다.
- Steering
Agent으 속도와 관련한 수치를 조절할 수 있다.
- Obstacle avoidance
NavMeshObstacle을 어떻게 회피할 것인지를 결정하는 내용의 프로퍼티들을 가지고 있다.
- Path Finding
NavMesh와 관련한 구체적인 설정이다.
- NavMeshObstacle
장애물 역할을 하는 object와 관련한 프로퍼티들을 가지고 있다.
중요한 property만 적어보겠다.
- Carve
carve를 통해 agent가 지나갈 수 없는 길을 만든다.