본문 바로가기

내일배움캠프/[P6-Solo.] GettingOverSparta

[TIL 24.05.30] NavMesh

.

 

목   차

     


    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 동작을 구현할 수 있습니다.


     

    마무리

    .