Unity: 2DNavMesh를 사용해보자

이재형·2024년 7월 26일
0
post-thumbnail

Unity 실습

문제 발생: 원래 만들었던 Ray로 이동하던 로직을 NavMesh를 이용하려함

문제 발견: Unity에서 제공하는 NavMesh는 3D만 제공하고 2D는 제공하지 않음

문제 해결: GitHub에 2D로도 사용할 수 있는 방법이 있어서 해결함

기본적인 3DNavMesh의 기능을 알고 있는 상태로 기본 기능을 생략합니다.

1. PackageManager에서 URL정보를 입력하여 Package받기

자세한 설명은: https://github.com/h8man/NavMeshPlus 에서 확인을 할 수 있습니다.


2. 각 오브젝트에 컴포넌트 추가

Bake를 해줄 오브젝트

활동 범위(타일맵)에 관한 오브젝트

Navigation Midifier 컴포넌트를 추가하고 TileMap이므로 Modifer TileMap도 추가 해주었음

벽(타일맵)에 대한 오브젝트

벽일 경우 Area를 Not Walkable로 변경해서 처리한다.


3. 컴포넌트를 활성화 화면 Bake가 되게 구현

using UnityEngine;
using NavMeshPlus.Components;

public class NavMeshBuild : MonoBehaviour
{
    private NavMeshSurface surface;

    void Awake()
    {
        surface = GetComponent<NavMeshSurface>();
    }

    private void OnEnable()
    {
        surface.BuildNavMeshAsync();
    }
}

여기서 문제가 발생했었는데 원래 제공하는 NavMesh경우 using AI를 사용하는데 여기서는 using NavMeshPlus.Components를 사용해서 해줘야한다.

그래서 NavMeshSurface의 경우가 AI와 위와 NavMeshPlus가 겹쳐서 문제를 찾기 힘들었다.


4. 움직일 물체에 Agent를 추가

각 기능들을 직접 설정하고 스크립트에서 조절을 하면 된다.


정리

배운 내용

1. 없음

해결 못한 문제

1. 없음

문제점

1. 없음

profile
한국사람

0개의 댓글