반응형

이번시간에는 적이 자동으로 생성되는 적 Spawn을 만들겠습니다

Enemy 오브젝트를 선택하고 프리팹을 만듭니다 Enemy 오브젝트를 폴더에 드래그하면 생성됩니다


그리고 Enemy프리팹에 좌표를 0으로 세팅합니다


게임화면에 있는 Enemy는 삭제합니다




빈 오브젝트를 만들어 이름을 SpawnManager라 합니다


스크립트를 생성하여 SpawnManager라 이름 붙힙니다


SpawnManager스크립트를 SpawnManager오브젝트에 붙힙니다




SpawnManager 스크립트를 작성합니다

적이 생성되는 지점을 카메라의 월드좌표를 정의 하는 함수 CreatePosition()을 만들고

시간에따라 자동으로 랜덤하게 적을 생성하게하는 SpawnEnemy()함수를 만들어 저장합니다



using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class SpawnManager : MonoBehaviour

{


    Vector3[] positions = new Vector3[5];


    public GameObject enemy;


    public bool isSpawn = false;


    public float spawnDelay = 1.5f;

    float spawnTimer = 0f;


// Use this for initialization

void Start ()

    {

        CreatePositions();

}

    void CreatePositions() // 적이 나오는 지점을 카메라의 월드좌표로 정의한다

    {

        float viewPosY = 1.2f;

        float gapX = 1f / 6f;

        float viewPosX = 0f;


        for(int i= 0; i < positions.Length; i++)

        {

            viewPosX = gapX + gapX * i;


            Vector3 viewPos = new Vector3(viewPosX, viewPosY, 0);


            Vector3 WorldPos = Camera.main.ViewportToWorldPoint(viewPos);


            WorldPos.z = 0f;


            positions[i] = WorldPos;

        }

    }


    void SpawnEnemy()//isSpawn이 true일때 적을 랜덤하게 생성

    {

        if (isSpawn == true)

        {

            if (spawnTimer > spawnDelay)

            {

                 int rand = Random.Range(0, positions.Length);

              

                 Instantiate(enemy, positions[rand], Quaternion.identity);

                           

                spawnTimer = 0f;

            }


            spawnTimer += Time.deltaTime;

        }


    }

// Update is called once per frame

void Update ()

    {

        SpawnEnemy();

    }

}






SpawnManager오브젝트를 선택하고 Enemy 프리팹을 연결하고 isSpawn을 체크합니다




반응형

+ Recent posts