본문 바로가기
유니티/탑 다운 슈팅 게임 만들기

탑다운 슈팅 게임 만들기 #4 – 적 스폰 시스템 구현하기

by 찡사랑방 2024. 11. 11.
728x90
728x90

 

이번 포스팅에서는 적 스폰 시스템을 구현해, 일정 시간 간격으로 적이 등장하게 만들어 보겠습니다. 이를 통해 게임의 난이도가 점진적으로 올라가며, 플레이어가 계속해서 새로운 적을 상대하는 긴장감 있는 경험을 제공할 수 있습니다.


1. 스폰 포인트 설정

먼저, 적이 등장할 위치를 정해주는 스폰 포인트를 설정합니다. 다양한 위치에서 적이 등장하도록 맵의 여러 위치에 스폰 포인트를 배치할 예정입니다.

1.1 스폰 포인트 오브젝트 생성

  1. Hierarchy 창에서 Empty Object를 생성하고 이름을 SpawnPoint로 변경합니다.
  2. SpawnPoint의 위치를 플레이어가 접근하기 어려운 맵의 가장자리나 코너에 배치합니다.
  3. 원하는 만큼 SpawnPoint를 복제하여 여러 개를 생성하고 맵의 다양한 위치에 배치합니다.
    •  SpawnPoint를 보기 쉽게 하려면 Gizmo 색상을 변경하거나, Sphere Collider와 같은 도형을 추가해도 좋습니다.

2. 적 스폰 매니저 스크립트 작성

적 스폰을 관리할 SpawnManager 스크립트를 작성하여, 일정 시간 간격으로 랜덤한 위치에서 적이 생성되도록 설정합니다.

2.1 SpawnManager 스크립트 작성

  • Assets > Scripts 폴더에서 SpawnManager.cs 스크립트를 생성하고, 다음과 같이 작성합니다:
using UnityEngine;

public class SpawnManager : MonoBehaviour
{
    public GameObject enemyPrefab; // 생성할 적 프리팹
    public Transform[] spawnPoints; // 적이 생성될 위치들
    public float spawnInterval = 3f; // 적이 생성되는 간격 (초)

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

    void SpawnEnemy()
    {
        int spawnIndex = Random.Range(0, spawnPoints.Length); // 랜덤한 스폰 포인트 선택
        Instantiate(enemyPrefab, spawnPoints[spawnIndex].position, Quaternion.identity);
    }
}

 

2.2 SpawnManager 설정

  1. SpawnManager 스크립트를 빈 오브젝트에 추가하고, 이름을 SpawnManager로 변경합니다.
  2. enemyPrefab 필드에 생성할 Enemy 프리팹을 연결합니다.
  3. spawnPoints 배열에 앞서 만든 SpawnPoint 오브젝트들을 드래그하여 추가합니다.
  4. spawnInterval 값을 원하는 대로 조정합니다. (예: 3f이면 3초마다 적이 스폰됩니다.)

3. 시간에 따라 난이도 증가 시스템 추가

게임이 진행될수록 점점 더 많은 적이 등장하도록 하여, 시간이 지나면서 게임 난이도가 높아지게 만들어 보겠습니다.

3.1 난이도 증가 기능 추가

SpawnManager 스크립트를 수정하여 시간이 지남에 따라 스폰 간격을 줄여 난이도를 높이도록 합니다.

public float difficultyIncreaseInterval = 10f; // 난이도 상승 간격 (초)
public float minSpawnInterval = 1f; // 최소 스폰 간격

void Start()
{
    InvokeRepeating("SpawnEnemy", spawnInterval, spawnInterval);
    InvokeRepeating("IncreaseDifficulty", difficultyIncreaseInterval, difficultyIncreaseInterval);
}

void IncreaseDifficulty()
{
    if (spawnInterval > minSpawnInterval)
    {
        spawnInterval -= 0.5f; // 스폰 간격 감소
    }
}

 

  1. difficultyIncreaseInterval을 설정하여 일정 시간마다 스폰 간격이 줄어들도록 합니다.
  2. minSpawnInterval을 설정하여 난이도 증가가 너무 빠르지 않도록 합니다.

4. 테스트 및 조정

  1. Play 모드로 실행
    • 적이 일정한 간격으로 스폰되는지 확인합니다.
    • 시간이 지날수록 스폰 속도가 빨라지며, 적이 더 자주 등장하는지 확인합니다.
  2. 난이도 조정
    • spawnInterval, difficultyIncreaseInterval 값 등을 조정하여 난이도를 적절히 조절해 줍니다.

5. 정리 및 다음 단계 예고

이번 포스팅에서는 적 스폰 시스템을 구현하여, 일정 시간마다 새로운 적이 맵에 등장하도록 설정했습니다. 이렇게 만들어진 스폰 시스템을 통해 게임의 긴장감을 한층 더 높일 수 있었습니다. 다음 포스팅에서는 플레이어와 적의 체력 및 게임 오버 조건을 추가해, 게임의 구조를 더욱 완성형으로 다듬어가겠습니다.

조금씩 게임의 모습이 완성되고 있으니, 다음 포스팅에서 다시 함께 진행해 봅시다!

728x90