Unity Chapter 11-15. 좀비 TPS 게임 만들기 : 좀비 AI 만들기 준비

Date:     Updated:

카테고리:

태그:

인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀
🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!


Chapter 11. 좀비 TPS 게임 만들기

내비게이션 시스템

좀비가 플레이어로 향하는 경로를 자동으로 계산

  • 유니티에서 경로를 자동으로 계산하고 알아서 장애물을 피해가는 AI를 제공하고 있다.

네비게이션 시스템 구성

image

  1. NavMeshAgent
    • NavMesh 위에서 경로를 계산하고 이동하는 게임 오브젝트에게 추가하는 컴포넌트
    • 반드시 NavMesh 위에서만 움직일 수 있다.
  2. NavMesh
    • 에이전트가 걸어다닐 수 있는 표면을 만든다.
    • 정적 게임 오브젝트를 대상으로 생성된다. (실시간으로 게임 도중에 변형하는 것이 불가능)
  3. OffMeshLink
    • 서로 끊어져 있는 NavMesh 영역 사이를 이을 수 있는 연결지점
    • 인공지능이 뛰어넘을 수 있는 울타리나 절벽 건너편 지역 등등 이런 것들을 구현할 때 사용
  4. NavMeshObstacle
    • 실시간으로 추가될 수 있는 에이전트의 경로를 막는 장애물


좀비 AI 준비

static

  • NavMesh는 정적 게임 오브젝트를 대상으로 생성되야 하는데
    • 이미 Level Artstatic이 체크가 되어 있는 정적 게임 오브젝트이기 때문에 Level Art를 AI 가 걸어다닐 수 있는 표면인 NavMesh 으로 만들 것이다!
    • image
      • 단, Navigation static이 체크가 되어 있어야 한다.
        • static을 체크하면 모든 종류의 static이 다 체크되긴 한다.😊

Bake

NavMesh를 굽기 위한 설정. 즉 AI가 돌아다닐 표면을 설정하기 위해 사용할 뿐.

  • Window - AI - Navigation 선택
    • Inspector 창 옆에 Navigation 창이 생성되는데 Bake 항목을 눌러주자.
      • image
      • Bake
        • 👉 네비게이션을 굽기 위한 여러가지 프로퍼티를 설정할 수 있다.
      • Baked Agent
        • 👉 씬을 돌아다니면서 네비게이션 에이전트가 돌아다닐 수 있는 영역을 측정한다.
        • Radius 를 0.4 로 설정
        • Height 를 1.8 로 설정
        • 그리고 Bake 버튼을 누르기
        • 이렇게 Baked Agent 의 size를 줄이면 좀 더 촘촘하게 구워지게 된다!
          • 반지름을 줄여주면 얇아진 에이전트가 더 많은 곳을 돌아다니므로 더 넓은 영역이 구워지게 된다.
          • 길이를 낮춰주면 천장이 낮은 곳도 탐색할 수 있게 되기 때문에 더 많은 영역이 구워지게 될 것이다.
          • 단 그렇다고 해서 너무 많이 줄여버리면 물리 처리 상으로 이동할 수 없는 장소까지도 AI가 이동할 수 있다.
            • 따라서 이런 경우를 방지하기 위해 AI를 입힐 오브젝트보단 조금 더 큰 사이즈로 설정해 주는 것이 좋다.
        • Max Slope 는 에이전트가 이동할 수 있는 최대 경사 각도
        • Step Height 는 에이전트가 이동할 수 있는 계단의 높이
          • 높으면 높을수록 에이전트가 높은 곳도 껑충 잘 넘어 다니게 될 것이다.
  • image
    • 이렇게 구워주면 파랗게 구워진 표면 (NavMesh)들을 확인할 수 있다.
    • 이제 AI는 이 표면 영역 위에서만 움직이며 경로를 계산하고 이동할 것이다.

Agent

실제로 게임 내에서 씬에서 사용할 에이전트들을 설정할 수 있다.

  • Bake에서의 Agent와 헷갈리면 안됨! 얘는 오직 네비게이션 표면을 굽기 위한 용도의 Agent 였다.
  • 네비게이션 창의 Agent 항목 클릭
    • image
      • Agent Types을 + - 을 통하여 추가 삭제할 수 있다.
        • 일단 Humanoid 타입인 것들에 대해서만 적용할 것
      • 반지름과 길이를 사진과 같이 설정해준다. 0.4, 1.8


좀비 오브젝트 생성

  1. 좀비 오브젝트의 모델로 쓸 📂Models/🟦MazeLowMan 을 Hierarchy 창에 드래그 해준다.
    • 현재 플레이어 캐릭터 모델과 같은 모델이다. 구분해주기 위해 좀비 모델은 색을 다르게 해주던가 할 것임!
  2. 이름을 Zombie라고 변경해준다.
  3. 다시 이 Zombie를 📂Prefabs 로 드래그 하여 프리팹으로 만들어준다.
    • Original Prefab 으로 생성해준다.

컴포넌트 설정

Zombie 오브젝트의 컴포넌트 설정

  • Transform
    • 위치를 0, 0, 2 로 설정
  • Animator
    • Root Motion 을 체크 해제 해준다.
      • 좀비의 위치를 직접 통제할 것이라서!
    • 📂Animations/Zombie Animator를 Controller 에 드래그 앤 드롭 해준다.
  • Capsule Collider 추가
    • 좀비의 물리, 충돌 처리
      • image
    • 캡슐이 좀비를 적절히 감싸게끔 사이즈 설정
      • 반지름은 0.3
      • 길이는 1.8
      • center는 0, 0.9, 0 으로
  • Audio Source 추가
    • 좀비 소리 재생을 위하여.
    • Play On Awake 체크 해제
  • Nav Mesh Agent 추가
    • 좀비에게 AI 를 부여하기 위하여
    • 설정
      • Agent Types 는 “Humanoid” 로
      • Speed 이동 속도는 8
      • Angular Speed 회전 속도는 180
      • Acceleration 가속도는 16
      • Stopping Distance 는 0
        • AI가 더 이상 추적하지 않는 거리
        • 코드 상에서 결정할 것이라서 일단 0 으로 둠
      • Auto Braking는 체크
        • 가속도나 관성에 의해서 목표 지점이나 Stopping Distance를 너무 멀리 벗어나지 않도록 자동 감속을 사용하는 옵션
      • Obstacle Avoidance 장애물 회피
        • 기본 값 그대로 둔다. 0.5, 2
        • 이 size 값을 늘리게 될 수록 장애물과 여유공간을 크게 두고 회피하게 된다.
          • 네비게이션 agent 에서 설정해던 size와는 별개


좀비 애니메이터 컨트롤러의 구성

📂Animations/Zombie Animator 클릭

  • 파라미터
    • Die 👉 사망시에 발동될 트리거
    • Attack 👉 공격할 때 트리거
    • Speed 👉 좀비 이동 속도
  • 레이어
    • Base Layer 로 레이어가 하나 뿐이다.
      • image
      • Idle이 Entry라 Idle 상태부터 시작
      • Move 좀비가 움직이는 애니메이션
      • Bite 좀비가 플레이어를 물어 뜯는(공격) 애니메이션
      • Die 좀비가 사망하는 애니메이션
      • 트랜지션
        • Idle 👉 Move
          • 조건) Speed > 0.1
        • Move 👉 Idle
          • 조건) Speed < 0.1
        • Any State 👉 Die
          • Die 트리거 발동
        • Any State 👉 Bite
          • Atack 트리거 발동


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기


Unity Lesson 1 카테고리 내 다른 글 보러가기

댓글 남기기