한 걸음 두 걸음

Day4 ACI 특강 ] NavMeshAgent bake / 목적지로 이동하는 프로그램 / asset Stroe 활용 본문

Unity

Day4 ACI 특강 ] NavMeshAgent bake / 목적지로 이동하는 프로그램 / asset Stroe 활용

언제나 변함없이 2019. 1. 24. 10:35
반응형

현재위치는 자동으로 입력되니 목적지만 설정해주면 된다.

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해서 적절한 크기로 만들 수 있도록 해야겠지요

반응형