반응형
게임 실행 중에 슬라임 생성
이번엔 Slime 프리펩을 이용하여 게임 실행 중에 슬라임들을 생성해 보도록 하겠습니다.
▶ Hierarchy 창에 새로운 빈 오브젝트를 생성합니다. 빈 오브젝트의 이름을 SlimeSpawner 로 변경합니다.
▶ SlimeSpawner 에 스크립트 컴포넌트를 추가합니다. 이름은 똑같이 SlimeSpawner로 생성합니다.
▶ 스크립트에 다음의 코드를 작성합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SlimeSpawner : MonoBehaviour
{
public Transform slimePrefab;
// Start is called before the first frame update
void Start()
{
StartCoroutine(SpawnSlime());
}
IEnumerator SpawnSlime()
{
while (Application.isPlaying)
{
Vector3 p = Random.insideUnitSphere * 25;
Vector3 pos = new Vector3(p.x, 0f, p.z);
var slime = Instantiate(slimePrefab, pos, Quaternion.identity);
yield return new WaitForSeconds(1f);
}
}
// Update is called once per frame
void Update()
{
}
}
- 위의 코드는 코루틴 함수를 이용해 슬라임을 1초에 한 마리씩 소환하는 코드입니다.
- Random.insideUnitySphere 는 원점 (0, 0, 0) 을 기준으로 반지름의 크기가 1 인 구체 내부의 좌표를 랜덤하게 생성해줍니다. x, y, z 각각 -1.0 ~ 1.0 사이의 무작위 값이 반환됩니다.
- Instantiate 는 프리팹을 인스턴스화 시켜주는 함수입니다. 여기서는 슬라임이 생성됩니다.
- yield return new WaitForSeconds(1f) 코드가 수행되는 시점에 코루틴 함수는 제어를 유니티에 반환하고 작업 수행을 잠시 중단합니다. 1초 후에 다시 제어권을 받고 중단했던 작업을 이어가게 됩니다.
* 코루틴에 대한 자세한 설명은 여기를 참조해 주세요.
▶ 씬 창에서 SlimeSpwner 오브젝트를 클릭한 후 Project 창에서 Slime 프리팹을 드래그 하여 인스펙터 창의 SlimeSpawner 스크립트에 연결해 줍니다. 이렇게 하면 스크립트의 "slimePrefab" 프로퍼티에 연결되어 코드에서 사용할 수 있습니다.
▶ "Main Camera" 를 클릭하고 Transform 을 다음과 같이 변경해 줍니다.
* 카메라가 위에서 아래를 비추도록 하기위한 Transform 값입니다.
▶ 게임을 실행하면 1초 마다 슬라임이 랜덤한 위치에 생성됩니다.
반응형
'게임 프로그래밍 > 유니티(2021.3 LTS) 강좌' 카테고리의 다른 글
유니티 UI - Anchor, Pivot, Position (0) | 2022.11.21 |
---|---|
[유니티 기초] 코루틴 (Coroutine) (0) | 2022.10.26 |
[유니티 기초] 프리팹 (Prefab) - 동기화 (2) | 2022.10.25 |
[유니티 기초] 에셋 스토어 (Asset Store) 사용 (0) | 2022.10.24 |
[유니티 기초] 충돌 처리 (Rigidbody, Colliders) (0) | 2022.10.21 |
댓글