이번시간에는 적이 자동으로 생성되는 적 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을 체크합니다
'게임 만들기 강좌 > 유니티2D 슈팅게임 만들기' 카테고리의 다른 글
유니티 슈팅 게임 만들기 12_Player 이동제한 만들기 (0) | 2019.01.02 |
---|---|
유니티 슈팅 게임 만들기 11_Remove Zone 만들기 (0) | 2019.01.01 |
유니티 슈팅 게임 만들기 9_Sound Manager 만들기 (0) | 2018.12.30 |
유니티 슈팅 게임 만들기 8_적 폭발 이팩트 및 로켓발사 (0) | 2018.12.29 |
유니티 슈팅 게임 만들기 7_총알 만들기 (2) | 2018.12.29 |