[Unity] Navigation을 사용하여 경로 검색

개요


이번에는 Navigation의 초기본적인 사용법을 배울 수 있는 간단한 프로젝트를 만들었습니다.
이번 프로젝트에서 유니티는 유저이고 레드큐브는 목적지입니다.

초중급 정도의 사람

Navigation이란 무엇입니까?


Unity는 Navigaton이라는 기능을 갖추고 있다.
Navigation은 장면 기하학적으로 생성된 네비게이션 격자를 사용하여 게임 세계에서 지능적으로 걷는 기능이다.
(Unity 공식 참조: 탐색 및 경로 검색
이번에는 NavMeshAgent라는 구성 요소를 사용해서 Navigation을 사용하고 싶습니다.

1. GameObject 배치


우선 플레이어, 목적지, 장애물과 지면을 어디에나 배치한다.

이번에는 각자의 게임 오브젝트.
유형
이름
유저(Unity 잼)
Player
목적지
Destination
장애물
Obstacle
바닥
Ground
이름!

2.NavMeshAgent


다음은 이번 보도의 요점인 Component의 NavMeshAgent입니다.
NavMeshAgent 경로 검색을 수행하고 이동할 객체에 추가합니다.
이 항목은 Player에 추가됩니다.

3. Player 스크립트 작성


다음은 Player의 스크립트를 작성합니다.
PlayerController.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class PlayerController : MonoBehaviour
{
    NavMeshAgent Player_Nav;
    GameObject Destination;

    void Start()
    {
        //プレイヤーのNavMeshAgentを取得
        Player_Nav = GetComponent<NavMeshAgent>();
        //目的地のオブジェクトを取得
        Destination = GameObject.Find("Destination");
    }

    void Update()
    {
        //目的地を設定
        Player_Nav.SetDestination(Destination.transform.position);
    }
}
요점은
1. 명칭 공간에 기입할지 여부using UnityEngine.AI2. Player의 NavMeshAgent 가져오기 성공 여부
3.SetDestination 잘 썼다(목적지 지정)
의 3점!!

4. Navigation Windows 열기


그러면 Navigation Windows를 열어 Player가 실행할 수 있는 범위를 지정합니다.

5. 이동 범위 해제


그러면 Player의 이동 범위를 지정합니다.
그룹, Obstacle을 선택하고 관리자 보기에서 Static 옆에 있는 삼각형을 클릭한 다음 Navigation Static을 선택합니다.

다음 단계의 범위와 갈 수 없는 범위를 지정합니다.
범위를 지정하려면 Navigation Windows Object의 Navigation Area 부분을 만듭니다.
Navigation Area
기능
Walkable
선택한 구역은 걸어도 돼요.
Not Walkable
선택한 구역은 걸을 수 없습니다
Jump
auto-generated, Off-Mesh Links용 (이번에는 사용하지 않음)

이번 프로젝트에서 갈 수 있는 범위는 Ground이고 갈 수 없는 범위는 Obstacle
지면을 걸을 수 있도록 설정하고 Obstacle을 걸을 수 있도록 설정합니다.
위 설정을 완료한 후 탐색 보기 Bake의 오른쪽 아래 모서리에 있는 Bake를 클릭하여 이동 범위 지정을 완료합니다.

위의 그림에서 보듯이 이동 범위가 파란색으로 표시되면 완성!!!

6. 작동 시도


이상의 설정이 끝나면 미리 보기 버튼을 눌러 보세요.

Player의 Unity 자동 경로 탐색, 지정된 범위로 이동합니다!!
이렇게 하면 Navigation 기능을 사용할 수 있습니다!!

마지막


어때요?
Navigation 기능은 간단하게 구현할 수 있습니다.
다음 글은 내비게이션 기능을 이용해 장애물을 피하는 방법을 소개하고 싶습니다.

좋은 웹페이지 즐겨찾기