1 분 소요

window-ai-navigation navigation을 사용하려면 gameobject의 static체크 중 navigation static을 체크해야한다.

image

  • Floor의 inspector창의 오른쪽 static에서 navigation static만 체크!

image

image

  • navigation에서 bake누르면 floor가 파란색으로 덮힘

image

  • Assets-Scene-PlayScene에 navaMesh 생성(1개의 scene에 1개의 navigation만 생성)

image

  • zombie가 floor의 navigation을 잘 따르려면, component에서 nav mesh agent를 추가
using UnityEngine.AI;

 NavMeshAgent _navAgent;

 private void Awake()
    {
	_navAgent = GetComponent<NavMeshAgent>(); 
     }

if (Input.GetButtonDown("Fire1"))
        {
            RaycastHit hit;
            Ray r = Camera.main.ScreenPointToRay(Input.mousePosition);
            int mask = 1 << LayerMask.NameToLayer("Floor");    // 비트연산으로 인해, Floor의 Layer인 8번 Layer만 쓸게     
            if(Physics.Raycast(r, out hit, Mathf.Infinity, mask))
            {
                _posTarget= hit.point;
                transform.LookAt( _posTarget );
                ChangedAction(eActionState.WALK);
                _navAgent.destination = _posTarget;
            }
        }

        if (Input.GetButtonDown("Fire2"))
        {
            RaycastHit hit;
            Ray r = Camera.main.ScreenPointToRay(Input.mousePosition);
            int mask = 1 << LayerMask.NameToLayer("Floor");    
            if (Physics.Raycast(r, out hit, Mathf.Infinity, mask))
                if (Physics.Raycast(r, out hit))
            {
                _posTarget = hit.point;
                transform.LookAt(_posTarget);
                ChangedAction(eActionState.RUN);
                _navAgent.destination = _posTarget;   //네비게이션의 목적지는 postarget(마우스지점)
            }
        }
  • fire1과 fire2에 ‘_navAgent.destination = _posTarget;`을 넣어줌

image

  • scene창에 좀비가 가야할 목적지를 빨간 선과 동그라미로 표시해줌

    baked agent에 의해 움직일곳와 움직이지 않을곳을 음영 표시 해줌

agent radius: 내 영역, 내 크기, 예)내 반지름이 0.5이면(지름1), 1미만의 좁은통로는 못지나감

image

  • cube의 radius를 1로 했을 때 cube의 하얀색 영역이 겹쳐져있어 좀비가 못지나감
  • 하얀색은 오브젝트가 못지나가는 영역임

image

  • cube의 radius를 0.5로하면 지나갈수 있음

agent height : radius와 같은 원리, 높이

Max Slope: 비탓길, 45도 경사까지는 허용, 그 이상은 못올라가게끔

image

  • max slope가 45일때, 어떤 지형의 경사가 45도 이하면 오브젝트가 갈 수 있지만

image

  • 경사가 45도 초과가 되면 오브젝트가 올라가지 못하고 지형의 뒤로 넘어가려 함

step height: 설정한 값의 크기 정도까지는 오브젝트가 걸어갈 수 있다.

image

  • sphere의 높이가1이고, y위치값이 0일떄, 튀어나와있는 부분은 0.5임 step height의 설정값이 0.4인데 0.5까지는 허용하는 모습
  • 지형에서 지형을 뛰어 내릴 수 있게 해주는 기능
  • 사전에 경사가 있는 지형의 static에 off mesh link generation도 체크해줌 (bake의 generated off mesh links기능을 사용할 수있게 해줌)

image

image

  • drop height를 2로 설정하면, 2의 높이까지는 뛰어내릴수 있다는 뜻이며, scene창에 떨어지는 지점과 착륙지점이 표시가 됨

  • 같은 높이 위치의 지형 사이의 빈 공간을 점프 할때 사용 (높이가 다른 지형을 점프하는건 안됨)

밑에서 위로 점프하기

  • 점프할 지형에 off mesh link 컴퍼넌트 추가
  • 점프할 지형의 자식에 start와 end의 빈 오브젝트 생성(기즈모)
  • 잘 보이게 색깔 지정 후 , 스타트지점과 앤드지점에 위치
  • off mesh link에 각 start, end오브젝트를 드래그

댓글남기기