유니티 기초 강좌: 적 캐릭터 생성

안녕하세요! 오늘은 유니티를 이용하여 게임에 등장할 적 캐릭터를 생성하는 방법에 대해 알아보겠습니다. 유니티는 강력한 게임 개발 플랫폼으로, 다양한 게임 프로토타입을 빠르게 만들도록 도와줍니다. 이 강좌에서는 적 캐릭터의 기본 속성 설정, 애니메이션 추가, AI 동작 구현 등을 다룰 예정입니다.

1. 유니티 설치 및 프로젝트 설정

유니티를 시작하기 위해서는 먼저 유니티 허브(Unity Hub)를 설치해야 합니다. 설치 후, 최신 버전의 유니티를 다운로드하고 새로운 3D 프로젝트를 생성합니다.

  • 유니티 허브를 열고 ‘New’ 버튼을 클릭합니다.
  • ‘3D’ 템플릿을 선택하고 프로젝트 이름을 입력한 후 ‘Create’를 클릭합니다.

2. 기본적인 3D 모델링

유니티에서 사용할 적 캐릭터의 모델을 생성할 수 있습니다. 모델링 툴로는 Blender와 같은 무료 프로그램을 사용할 수 있으며, 모델링이 완료된 후 .fbx 포맷으로 내보내기 합니다.

모델을 유니티로 가져오는 방법은 다음과 같습니다:

  • 프로젝트 내 ‘Assets’ 폴더를 오른쪽 클릭하여 ‘Import New Asset’을 선택합니다.
  • 저장한 .fbx 파일을 선택하고 ‘Import’를 클릭합니다.

3. 적 캐릭터의 기본 설정

프로젝트에 적 캐릭터 모델을 추가한 후, 씬 뷰로 드래그하여 배치합니다. 이후 적 캐릭터의 기본 속성을 설정합니다.

  • Hierarchy에서 적 캐릭터를 선택하고 Inspector 창에서 ‘Transform’ 속성을 조정합니다.
  • 이름을 ‘Enemy’로 설정하여 쉽게 구분합니다.

4. Collider 및 Rigidbody 추가

적 캐릭터가 충돌을 감지하고 물리적인 상호작용을 하기 위해 Collider와 Rigidbody 컴포넌트를 추가합니다.

  • Hierarchy의 ‘Enemy’ 오브젝트를 선택 후 Inspector의 ‘Add Component’ 버튼을 클릭합니다.
  • ‘Capsule Collider’를 추가하여 캐릭터의 형상에 맞게 조정합니다.
  • Rigidbody를 추가하여 물리 엔진의 영향을 받을 수 있도록 합니다. 속도 및 중력 설정을 조정하세요.

5. 애니메이션 추가

적 캐릭터에 생명을 불어넣기 위해 애니메이션을 추가합니다. Unity는 기본 애니메이션 시스템 외에도, Animator와 Animation Clip을 통해 다양한 애니메이션을 설정할 수 있습니다.

애니메이션의 설정 과정은 다음과 같습니다:

  1. Assets 폴더 내에 ‘Animations’ 폴더를 생성합니다.
  2. ‘Animation’ 창을 열고 ‘+’ 버튼을 클릭하여 새로운 Animation Clip을 생성합니다.
  3. Animation Clip에 기초적인 움직임을 추가하고 저장합니다.

6. 적 AI 구현

적 캐릭터가 플레이어를 인식하고 행동하게 하기 위해 기초적인 AI를 구현합니다. C# 스크립트를 사용하여 적 캐릭터의 행동 로직을 정의할 수 있습니다.

AI 스크립트의 기본 계획은 다음과 같습니다:

  • 플레이어를 인식하고 추적하는 로직을 구현합니다.
  • 제자리에서 공격하거나, 플레이어와의 거리에 따라 움직임을 조정합니다.

기본 스크립트는 다음과 같습니다:


    using UnityEngine;

    public class EnemyAI : MonoBehaviour
    {
        public Transform player;
        public float attackRange = 5.0f;
        public float moveSpeed = 2.0f;

        void Update()
        {
            float distance = Vector3.Distance(transform.position, player.position);
            if (distance < attackRange)
            {
                Attack();
            }
            else
            {
                ChasePlayer();
            }
        }

        void ChasePlayer()
        {
            Vector3 direction = (player.position - transform.position).normalized;
            transform.position += direction * moveSpeed * Time.deltaTime;
        }

        void Attack()
        {
            Debug.Log("Enemy attacks!");
            // 공격 애니메이션 및 기타 로직 추가 가능
        }
    }
    

7. 유닛의 상태 관리

적 캐릭터의 다양한 상태(공격, 대기, 이동 등)를 관리하기 위한 스크립트를 작성합니다. 이를 통해 적의 행동을 보다 세분화하고 제어할 수 있습니다.

예를 들어, 다음과 같은 Enum을 사용하여 상태를 관리할 수 있습니다:


    public enum EnemyState
    {
        Idle,
        Chase,
        Attack
    }
    

8. 게임 테스트 및 디버그

모든 설정이 완료되었다면 게임을 테스트하고 디버깅을 진행합니다. 적의 AI가 제대로 작동하는지, 애니메이션이 자연스럽게 연결되는지 확인하는 것이 중요합니다.

  • 씬 뷰에서 플레이 버튼을 눌러 게임을 실행합니다.
  • 적 캐릭터가 플레이어를 추적하고 공격하는지 확인합니다.

9. 스폰 시스템 구현

게임에 계속해서 적이 등장하도록 스폰 시스템을 만듭니다. 이를 통해 게임의 난이도와 지속성을 높일 수 있습니다. 간단한 스폰 스크립트는 다음과 같습니다:


    public class EnemySpawner : MonoBehaviour
    {
        public GameObject enemyPrefab;
        public float spawnTime = 3.0f;

        void Start()
        {
            InvokeRepeating("SpawnEnemy", spawnTime, spawnTime);
        }

        void SpawnEnemy()
        {
            Instantiate(enemyPrefab, transform.position, transform.rotation);
        }
    }
    

10. 마무리 및 추가할 것들

이제 기본적인 적 캐릭터를 생성하고 AI 로직을 추가했습니다. 이후에는 다양한 기술을 통해 캐릭터의 행동을 더욱 다채롭게 만들 수 있습니다. 예를 들어, 다양한 공격 방식, 다른 상태 머신을 추가하거나 애니메이션의 전환을 부드럽게 설정할 수 있습니다.

향후에는 이러한 객체들을 더 확장하여 플레이어와의 전투나 대규모 전투 시스템으로 발전시킬 수도 있습니다.

결론

오늘 유니티를 이용하여 적 캐릭터를 생성하는 기본적인 방법을 알아보았습니다. 더 나아가 자신만의 게임을 만드는 데 있어 꼭 필요한 필수 지식입니다. 이 강좌를 통해 유니티에서 적 캐릭터를 다루는 방법을 이해하는 데 도움이 되었기를 바랍니다.

이제 여러분의 상상력을 발휘해 더 멋진 게임을 만들어 보세요. 감사합니다!