몬스터를 소환하고 정해진 루트로 이동하게 하는 스크립트
- 목차
728x90
먼저 스크립트를 작성하였다 스크립트 이름은 SpawnManager라고 명시하였다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnManager : MonoBehaviour
{
//소환상태
public enum SpawnState
{
None, Spawn
}
public SpawnState spawnState = SpawnState.None;
//소환 포인트
public Transform spawnPoint;
//소환할 적의 종류
public int spawnNum;
//적 프리팹
public List<GameObject> enemyPrefab = new List<GameObject>();
//소환시간
private float spawnTime;
//설정 소환시간
public float setSpawnTime;
//소환된 적
public List<GameObject> spawnedEnemy = new List<GameObject>();
//이동 포인트
public List<Transform> movePoint = new List<Transform>();
// Start is called before the first frame update
void Start()
{
Invoke("SpawnStart", 2.0f);
}
// Update is called once per frame
void Update()
{
switch(spawnState)
{
case SpawnState.Spawn:
{
spawnTime += Time.deltaTime;
if(spawnTime>=setSpawnTime)
{
//적 생성
CreateEnemy(spawnNum);
//소환 시간 초기화
spawnTime = 0;
}
break;
}
}
}
//소환 시작
void SpawnStart()
{
//적 생성
CreateEnemy(spawnNum);
//소환 상태를 Spawn으로 변경
spawnState = SpawnState.Spawn;
}
//적 소환
public void CreateEnemy(int i)
{
//적 생성(원본, 위치, 회전)
GameObject enemy = Instantiate(enemyPrefab[i], spawnPoint.position,spawnPoint.rotation);
for(int j=0;j<movePoint.Count; j++)
{
//적에게 이동경로를 알려준다.
enemy.GetComponent<Enemy>().movePoint.Add(movePoint[j]);
}
//생성된 적을 담아둔다.
spawnedEnemy.Add(enemy);
}
}
이리 만든다음 몬스터 인스펙터 에다가 넣어준다음 스폰되게 해줄 지형을 넣어주면 된다. 그다음에 이동할 루트는 별도로 만들어서 넣어주자!
일단은 시험기간이여서 스크립트만 올렸지만 시험기간 끝나면 직접 인스펙터랑 다 보여드리도록 하겠습니다.
728x90
'유니티,Unity,C#' 카테고리의 다른 글
오브젝트 풀링(원하는 스폰지역을 직접 만들어서 넣어주고 랜덤으로 소환) (0) | 2023.06.04 |
---|---|
유니티 json데이터 암호화하는법(AES암호화방식) (1) | 2023.05.20 |
몬스터가 정해진 루트로 이동하는 스크립트 (0) | 2023.01.05 |
Unity Dotween(글씨가 쳐지는듯한 효과 만들기) (0) | 2022.12.28 |
Unity/C# - Time 함수 관련 정리 (0) | 2022.11.29 |