unity-24: Navigation(1)
window-ai-navigation navigation을 사용하려면 gameobject의 static체크 중 navigation static을 체크해야한다.
- Floor의 inspector창의 오른쪽 static에서 navigation static만 체크!
- navigation에서 bake누르면 floor가 파란색으로 덮힘
- Assets-Scene-PlayScene에 navaMesh 생성(1개의 scene에 1개의 navigation만 생성)
- 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;`을 넣어줌
- scene창에 좀비가 가야할 목적지를 빨간 선과 동그라미로 표시해줌
baked agent에 의해 움직일곳와 움직이지 않을곳을 음영 표시 해줌
agent radius: 내 영역, 내 크기, 예)내 반지름이 0.5이면(지름1), 1미만의 좁은통로는 못지나감
- cube의 radius를 1로 했을 때 cube의 하얀색 영역이 겹쳐져있어 좀비가 못지나감
- 하얀색은 오브젝트가 못지나가는 영역임
- cube의 radius를 0.5로하면 지나갈수 있음
agent height : radius와 같은 원리, 높이
Max Slope: 비탓길, 45도 경사까지는 허용, 그 이상은 못올라가게끔
- max slope가 45일때, 어떤 지형의 경사가 45도 이하면 오브젝트가 갈 수 있지만
- 경사가 45도 초과가 되면 오브젝트가 올라가지 못하고 지형의 뒤로 넘어가려 함
step height: 설정한 값의 크기 정도까지는 오브젝트가 걸어갈 수 있다.
- sphere의 높이가1이고, y위치값이 0일떄, 튀어나와있는 부분은 0.5임 step height의 설정값이 0.4인데 0.5까지는 허용하는 모습
generated off mesh links - drop heigth
- 지형에서 지형을 뛰어 내릴 수 있게 해주는 기능
- 사전에 경사가 있는 지형의 static에 off mesh link generation도 체크해줌 (bake의 generated off mesh links기능을 사용할 수있게 해줌)
- drop height를 2로 설정하면, 2의 높이까지는 뛰어내릴수 있다는 뜻이며, scene창에 떨어지는 지점과 착륙지점이 표시가 됨
generated off mesh links - Jump distance
- 같은 높이 위치의 지형 사이의 빈 공간을 점프 할때 사용 (높이가 다른 지형을 점프하는건 안됨)
밑에서 위로 점프하기
- 점프할 지형에 off mesh link 컴퍼넌트 추가
- 점프할 지형의 자식에 start와 end의 빈 오브젝트 생성(기즈모)
- 잘 보이게 색깔 지정 후 , 스타트지점과 앤드지점에 위치
- off mesh link에 각 start, end오브젝트를 드래그
댓글남기기