본문 바로가기

유니티

유니티 2D에서 적이 1번부터 100번까지 있을 경우 적을 물리치면 순차적으로 나타나게 하는 방법

728x90
반응형

유니티 2D에서 적을 순차적으로 나타나게 하는 방법은 다음과 같습니다.



Enemy 오브젝트를 프리팹으로 만듭니다. 이 프리팹에는 Enemy 스크립트가 있어야 합니다.

Enemy 스크립트에서는 적의 번호를 저장할 변수를 만듭니다.

Enemy 스크립트에서 OnCollisionEnter2D 함수를 구현합니다. 이 함수는 적이 충돌할 때 호출됩니다.

OnCollisionEnter2D 함수에서는 적이 죽었을 때 다음 적을 활성화합니다.



아래의 코드는 유니티 2D에서 적을 물리치면 순차적으로 다른 적이 나타나게 하는 간단한 예시입니다. 코드는 C#으로 작성되었으며, 자세한 주석을 포함하고 있습니다.



using System.Collections;

using System.Collections.Generic;

using UnityEngine;



public class EnemySpawner : MonoBehaviour

{

    public GameObject enemyPrefab; // 생성할 적 프리팹

    public int totalEnemies = 100; // 생성할 전체 적 수

    public float spawnDelay = 1f; // 각 적 생성 간격 (초)



    private int currentEnemy = 0; // 현재 생성된 적 수



    void Start()

    {

        // 일정 간격으로 적 생성 함수 실행

        InvokeRepeating("SpawnEnemy", 0f, spawnDelay);

    }



    void SpawnEnemy()

    {

        // 현재 생성된 적 수가 전체 적 수를 초과하면 함수 종료

        if (currentEnemy >= totalEnemies)

        {

            return;

        }



        // 적 생성

        GameObject enemy = Instantiate(enemyPrefab, transform.position, Quaternion.identity);



        // 적 생성 후 생성된 적 수 증가

        currentEnemy++;



        // 생성된 적에게 적 번호 할당

        enemy.GetComponent<EnemyController>().enemyNumber = currentEnemy;

    }

}



public class EnemyController : MonoBehaviour

{

    public int enemyNumber; // 적 번호



    void OnCollisionEnter2D(Collision2D collision)

    {

        if (collision.gameObject.CompareTag("Player"))

        {

            // 적 제거

            Destroy(gameObject);



            // 다음 적 생성

            GameObject.FindObjectOfType<EnemySpawner>().SpawnEnemy();

        }

    }

}





위의 코드는 "EnemySpawner"와 "EnemyController" 두 개의 스크립트를 사용합니다. "EnemySpawner" 스크립트는 일정 간격으로 적을 생성하고, "EnemyController" 스크립트는 적이 플레이어와 충돌했을 때 적을 제거하고 다음 적을 생성합니다.



먼저 "EnemySpawner" 스크립트에서는 생성할 적 프리팹, 생성할 전체 적 수, 각 적 생성 간격 등을 설정합니다. "Start" 함수에서는 "InvokeRepeating" 함수를 사용하여 일정 간격으로 "SpawnEnemy" 함수를 반복 실행합니다.



"SpawnEnemy" 함수에서는 현재 생성된 적 수가 전체 적 수를 초과하지 않도록 체크한 후, "Instantiate" 함수를 사용하여 적을 생성합니다. 이후 생성된 적 수를 증가시키고, 생성된 적에게 적 번호를 할당합니다.



"EnemyController" 스크립트에서는 적과 플레이어가 충돌했을 때 "Destroy" 함수를 사용하여 적을 제거하고, "GameObject.FindObjectOfType" 함수를 사용하여 "EnemySpawner" 스크립트를 찾은 후 "SpawnEnemy" 함수를 호출하여 다음 적을 생성합니다. 이때 "SpawnEnemy" 함수를 호출하는 것으로 인해 다음 적이 순차적으로 생성됩니다. 생성된 적에게 할당된 적 번호는 적이 제거될 때까지 유지됩니다.



위의 코드에서는 적이 플레이어와 충돌했을 때 다음 적을 생성하도록 구현했지만, 이를 다른 이벤트나 조건에 맞게 변경하여 사용할 수 있습니다. 예를 들어, 적이 시간이 지나거나 일정 거리를 이동했을 때 다음 적을 생성하도록 변경할 수 있습니다.



또한, 위의 코드에서는 생성된 적이 즉시 화면에 나타나지만, 이를 조정하여 적이 나타나는 위치, 애니메이션 등을 변경할 수 있습니다. 이를 위해서는 "Instantiate" 함수를 사용하여 적을 생성할 때 위치, 회전 등을 설정하면 됩니다.

728x90
반응형