한 걸음 두 걸음
Day4 ACI 특강 ] NavMeshAgent bake / 목적지로 이동하는 프로그램 / asset Stroe 활용 본문
현재위치는 자동으로 입력되니 목적지만 설정해주면 된다.
NavMeshAgent 컴포넌트
플레이어와 Targer객체를 제외함
모든 객체를 Navigation state으로 설정
Baking 하여 이동 Mech를 생성한다.
컨셉
네비게이션 컨셉 : 모든 이동경로 파악 후 최단거리로 이동
시작해봅시다!
큐브들을 Plane위에 배치하고 색 입혀준 후 environment 빈 객체 내부에 넣어줌~
이제 static으로 설정해주기위해 navigation static설정해줌
자식객체들도 똑같이 설정해주기위해 YES~
이제 player객체와 target객체를 캡슐로 만들어주었음
이 두 객체에 컴포넌트 추가를 해줄 건데
nav Mesh Agent임
여기서 baking을 해주어야함!
베이크 해주면 떠야하는데 왜 안뜬담. ㅠㅠ
하나의 큐브를 추가해서 회전시켜 언덕으로 만들어줌~
Plane도 static으로 처리해주고, 도형이 바닥에 붙어있도록 만들어주어야함!
그럼 이렇게 이동할 수 있는 경로가 나타납니다 ㅎㅎ
이걸 조정해서 이동 경로 넓이나, 올라갈 수 있는 각도 등을 확인가능하다.
이제 목적지를 설정해주어야 하는데
또는
로들어가서
destination을 찾아 들어간다.
들어가보면 위와같이 뜨는데,
위의 using을 써주는 것이 중요하다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
[RequireComponent(typeof(NavMeshAgent))]
public class naviobj : MonoBehaviour
{
public Transform target;
Vector3 destination;
NavMeshAgent agent;
void Start()
{
// Cache agent component and destination
agent = GetComponent<NavMeshAgent>();
destination = agent.destination;
}
void Update()
{
// Update destination if the target moves one unit
if (Vector3.Distance(destination, target.position) > 1.0f)
{
destination = target.position;
agent.destination = destination;
}
}
}
위의 코드를 unity의 script로 넣어줍니다.
스크립트를 player(Mover)에 넣어주고
그리고 target을 public 변수로 넣어주면
이렇게 따라다니는 ai가 작동됨을 볼 수 있다.
추가로 계단처럼 만들어준 후, bake해줘서 이동경로로 인식시키고 올려보았다.
(올라갈 수 있는 계단의 높이, 계단의 각도까지 navigation탭에서 설정해줄 수 있었다.)
이제 여기서 적군이 나타날 곳을 array로 지정해주거나 rand함수로 랜덤하게 만들어주던지 해야해요
->> EnemyManager / spownManager API도 만들어져있으니 가져다쓰면된다.
또는 이렇게 range범위 지정해서 사용해도 좋음
이제 새로운 Scene를 만들어주었음! 그리고 에셋스토어들어가서 하나 설치해줄거임~~
이렇게.
에셋스토어(control 9)
에서 home stuff 설치해서 import해주면
이와같이 생김.
이제 여기서 끌어다 쓸건데 이건 prefebs이고
요건 model인데 둘의 차이가 있다. model의경우 추가 종이가 더 붙어있어용
클릭해보면 이렇게 inspector로 설정해줄 수 있다.
Rig = 뼈를 맞춰준다 (사람 / 동물등에 쓰임)
Material
Model
animation....
여기서 Generate Lightmap은 UV인데 이는
어떤 면에 색을 칠할 떄(매핑) mesh를 계산해주어야하는데(좌표값 필요 - 각 정점의 좌표)
좌표값이 헷갈릴 수 있으니 x, y대신에 (U, V)를 사용한다. 정점 mesh를 가지고 재질을 입혔을 때 정확하게 그 텍스쳐가 입혀질 수 있게끔.
-_-
빌드눌러주고 저장시켜줄 폴더 지정 해줍니다. 그러면 exe파일이 생깁니다.
Windowed해서 적절한 크기로 만들 수 있도록 해야겠지요