Unity에서 NavMeshAgent 작업
Unity에서 NavMeshAgent는 게임의 캐릭터나 개체에 대한 경로 찾기 및 탐색을 구현할 수 있는 강력한 구성 요소입니다. Unity의 내장 탐색 시스템을 활용하여 NavMesh 표면의 경로를 계산합니다. 이 튜토리얼에서는 코드 예제를 통해 NavMeshAgent 설정 및 사용에 대한 기본 사항을 다룹니다.
전제 조건
NavMesh 설정 Unity
NavMeshAgent 사용에 대해 알아보기 전에 장면에서 NavMesh를 설정해야 합니다.
NavMesh 표면 만들기:
- 'GameObject -> 3D Object -> NavMesh Surface'로 이동합니다. 그러면 'NavMeshSurface' 구성요소가 연결된 새로운 GameObject가 생성됩니다.
- 장면에 필요한 대로 NavMesh Surface 구성 요소의 설정을 조정합니다.
NavMesh 굽기:
- 'NavMesh Surface' 구성 요소에서 'Bake' 버튼을 클릭하여 장면에 대한 NavMesh를 생성합니다.
- 정확한 경로 탐색이 가능하도록 환경(지형, 장애물 등)이 올바르게 구성되어 있는지 확인하세요.
코드에서 NavMeshAgent 사용
이제 NavMeshAgent를 사용하여 GameObject를 이동하는 코드를 작성해 보겠습니다.
1단계: NavMeshAgent를 GameObject에 연결
- Unity 편집기에서 NavMeshAgent 구성 요소를 GameObject에 연결합니다. GameObject를 선택하고 'Add Component'을 클릭한 다음 'NavMeshAgent'을 추가하면 됩니다.
2단계: 이동 스크립트 작성
- 새로운 C# 스크립트(예: 'PlayerController.cs')를 생성하고 NavMeshAgent 구성 요소를 사용하여 GameObject에 연결합니다. 원하는 코드 편집기에서 스크립트를 엽니다.
using UnityEngine;
using UnityEngine.AI;
public class PlayerController : MonoBehaviour
{
private NavMeshAgent navMeshAgent;
void Start()
{
navMeshAgent = GetComponent<NavMeshAgent>();
}
void Update()
{
// Check for player input or any other conditions to trigger movement
if (Input.GetMouseButton(0)) // Example: Move towards mouse click position
{
MoveToClickPosition();
}
}
void MoveToClickPosition()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
// Move NavMeshAgent towards the clicked position
navMeshAgent.SetDestination(hit.point);
}
}
}
3단계: 장면 설정 및 테스트
- NavMeshAgent 및 연결된 스크립트가 포함된 GameObject가 장면에 있는지 확인하세요.
- Unity 편집기에서 Play를 누르고 동작을 관찰합니다.
- 'NavMesh' 표면의 아무 곳이나 클릭하면 GameObject가 해당 위치를 향해 이동해야 합니다.
요약
이 튜토리얼에서는 Unity에서 경로 찾기 및 탐색을 위해 NavMeshAgent를 설정하고 사용하는 방법을 배웠습니다. 다음 단계와 코드 예제를 따르면 Unity에 내장된 내비게이션 시스템을 사용하여 게임 내 캐릭터나 개체의 기본 움직임을 구현할 수 있습니다.