.
목 차
Unity에서 NavMesh에 대해 알아보자
Unity의 NavMesh는 경로 탐색과 AI 이동을 처리하는 데 사용되는 강력한 도구입니다. NavMesh는 게임 환경에서 캐릭터가 장애물을 피하고 목적지로 이동할 수 있는 경로를 자동으로 생성하고 관리합니다.
NavMesh의 주요 개념
NavMesh:
NavMesh는 게임 환경에서 탐색 가능한 영역을 나타내는 데이터 구조입니다. 이는 정적(static)인 환경에서 자동으로 생성됩니다.
NavMesh Agent:
NavMesh Agent는 NavMesh 위를 이동하는 AI 캐릭터를 나타내는 컴포넌트입니다. 이 컴포넌트를 사용하면 캐릭터가 NavMesh를 따라 이동할 수 있습니다.
NavMesh Obstacle:
NavMesh Obstacle은 NavMesh 상에 장애물을 나타내며, 이동 경로를 막거나 변경하는 데 사용됩니다.
NavMesh 설정 방법
NavMesh 생성:
Navigation Window를 통해 NavMesh를 생성할 수 있습니다. Window > AI > Navigation을 선택하여 NavMesh를 베이크(bake)합니다.
NavMesh Agent 추가:
이동하려는 캐릭터에 NavMesh Agent 컴포넌트를 추가합니다. 이 컴포넌트는 캐릭터가 NavMesh를 따라 이동할 수 있게 합니다.
// NavMesh Agent를 이용해 목적지로 이동시키는 예제
using UnityEngine;
using UnityEngine.AI;
public class MoveToTarget : MonoBehaviour {
public Transform target;
void Start() {
NavMeshAgent agent = GetComponent<NavMeshAgent>();
agent.destination = target.position;
}
}
NavMesh Obstacle 추가:
NavMesh 상에서 동적인 장애물을 만들기 위해 NavMesh Obstacle 컴포넌트를 사용할 수 있습니다. 이 컴포넌트를 장애물 오브젝트에 추가합니다.
NavMesh의 활용 예
적 AI의 경로 탐색:
적 캐릭터가 플레이어를 추적하거나 순찰 경로를 따르는 데 사용됩니다.
NPC 이동 경로 설정:
NPC가 특정 경로를 따라 이동하거나 목표 지점으로 이동하도록 설정할 수 있습니다.
동적인 장애물 회피:
게임 중에 생성되거나 이동하는 장애물을 회피하는 AI를 구현할 수 있습니다.
실시간 경로 업데이트:
게임 환경이 동적으로 변화할 때 NavMesh를 업데이트하여 AI가 적절한 경로를 찾을 수 있도록 합니다.
csharp
코드 복사
// NavMesh Obstacle을 이용해 장애물을 동적으로 추가하는 예제 using UnityEngine; public class DynamicObstacle : MonoBehaviour { public GameObject obstaclePrefab; void Update() { if (Input.GetKeyDown(KeyCode.O)) { Vector3 position = new Vector3(Random.Range(-10, 10), 0, Random.Range(-10, 10)); Instantiate(obstaclePrefab, position, Quaternion.identity); } } }
Unity의 NavMesh 시스템은 게임 개발자가 AI 캐릭터의 이동을 쉽게 관리할 수 있도록 돕는 강력한 도구입니다. 이를 통해 보다 현실적이고 복잡한 AI 동작을 구현할 수 있습니다.
마무리
.
'내일배움캠프 > [P6-Solo.] GettingOverSparta' 카테고리의 다른 글
[TIL 24.05.31] LOD, Occlusion Culling, ClippingPlane (0) | 2024.05.31 |
---|---|
[TIL 24.05.29] 레이캐스트 (0) | 2024.05.29 |
[TIL 24.05.28] Rigidbody Addforce (0) | 2024.05.28 |
[TIL 24.05.26~27] UI 업데이트, 제네릭 싱글톤, RenderMode (0) | 2024.05.26 |