Unity - Nav Mesh Agent 움직임 개선

2023. 4. 17. 23:30·Unity 에러 노트

유니티의 api로 길 찾기 네비메시(Nav Mesh) 컴포넌트를 제공합니다.

 

몬스터가 벽, 물, 낭떠러지 등을 피해서 최단 루트로 유저를 쫓아오거나 NPC의 정해진 루트 배회 등 유용하게 쓸 곳이 많은 기능이지만,

 

제 경우엔 몬스터가 네비메시 기능을 이용하여 플레이어를 쫓아오는데 2가지 문제가 발생하였습니다.

1. 회전 속력이 느려 플레이어를 쫓아오는 것이 자연스럽지 않음

2. 플레이어로부터 일정 거리 이하가 되면 정지하는데 관성을 받아 미끄러져서 지나치게 가까워짐

 

 

해결 방법은 각각 아래와 같습니다.

 

1. NavMeshAgent의 회전 기능을 끄고 직접 회접값을 즉각 대입

    (NavMeshAgent 변수 명칭).updateRotation = false;

    를 써주면 네비메시 에이전트는 더 이상 회전을 주지 않습니다.

   플레이어 방향을 바로 보게 하려면

   transform.LookAt(Transform Target, Vector3 WorldUp); 을 쓰면 되지만,

 

   저는 회전하는 모습을 플레이어에게 보여주도록 하기 위해 선형 보간법인 Lerp를 이용하여 처리하였습니다. 

2. 멈출 때 NavMeshAgent의 속력을 즉시 0으로 만들어 줌

    멈춰야 할 시점에 아래 구문을 써주면 즉시 멈춥니다.

    (NavMeshAgent 변수 명칭).velocity = Vector3.zero; 

 

<< 해결 >>

'Unity 에러 노트' 카테고리의 다른 글

매뉴얼에서 알려주지 않은 코루틴 WaitForSeconds()의 매개변수 t에 대해  (0) 2024.04.15
유니티) 갤럭시 s24 시리즈와의 앱 호환성 문제  (0) 2024.03.12
Edge Collider 2D 스크립팅 툴팁 오기  (0) 2024.03.10
인스펙터에 스크립트 활성/비활성 체크 박스 사라짐  (0) 2023.10.12
스프라이트 마스크가 다른 오브젝트의 스프라이트를 출력할 때  (0) 2023.09.15
'Unity 에러 노트' 카테고리의 다른 글
  • 유니티) 갤럭시 s24 시리즈와의 앱 호환성 문제
  • Edge Collider 2D 스크립팅 툴팁 오기
  • 인스펙터에 스크립트 활성/비활성 체크 박스 사라짐
  • 스프라이트 마스크가 다른 오브젝트의 스프라이트를 출력할 때
ybbro
ybbro
대부분의 포스팅은 pc에서 작성되었습니다. 모바일에서 볼 때 설명이 잘리면 데스크탑 모드를 사용해보길 바랍니다.
  • ybbro
    어떻게든 굴리는 게임 공방
    ybbro
  • 전체
    오늘
    어제
    • 전체 N
      • 스파르타코딩클럽_Unity개발과정 N
      • Unity 2D
        • 카드게임
        • 플랫포머 게임
        • 뱀서라이크
      • Unity 3D
        • 닷지
        • 유니티 짱
        • 디펜스 게임
      • Unity 에러 노트
      • 기능 구현 방법 정리
      • 셰이더 그래프
        • 2D
        • 3D
      • 프로그래머스
      • 자료구조
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    유니티
    마스크
    앱이 휴대전화와 호환되지 않아 설치되지 않았습니다
    unity
    무료스킨
    유니티 애니메이터 파라미터 초기화
    갤럭시 S24
    UI
    다크모드
    sprite mask
    대시
    잔상
    hello
    64비트
    세이브
    스파인
    룰렛
    직렬화
    삭제
    텍스트매시프로
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
ybbro
Unity - Nav Mesh Agent 움직임 개선
상단으로

티스토리툴바