본문 바로가기

Project/우다다다 고영희

[우다다다 고영희] Unity: 자동차 오브젝트 소환하기

728x90

오브젝트 풀에서 자동차 오브젝트를 소환하여 사용하는 것에 대해 알아보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class ObjectSpawn : MonoBehaviour
{
    public ObjectManager objectManager;
 
    public float spawnBetTimeMin;
    public float spawnBetTimeMax;
 
    float spawnTime;
    float nextSpawnTime;
    float timeAfterSpawn;
    float randomSpawnTime;
 
    int carCount;
 
    string[] carName;
 
    void Start()
    {
        nextSpawnTime = 1f;
        carCount = 0;
 
        carName = new string[] { "car1""car2""car3""car4""car5""car6""car7""car8""car9"};
    }

 

  • objectManager - ObjectManager 스크립트를 저장할 변수이다.
  • spawnBetTimeMin - 자동차 소환 주기 최소 시간을 저장할 변수이다.
  • spawnBetTimeMax - 자동차 소환 주기 최대 시간을 저장할 변수이다.
  • spawnTime - timeAfterSpawn과 randomSpawnTime을 더한 값을 저장할 변수이다.
  • nextSpawnTime - 다음 소환 시간을 저장할 변수이다.
  • timeAfterSpawn - 게임 진행 시간을 저장할 변수이다.
  • randomSpawnTime - 자동차 소환 주기 최소와 최대 값 중에 랜덤의 값을 저장할 변수이다.
  • carCount - 자동차 소환 횟수를 저장할 변수이다.
  • carName - 오브젝트 풀에 있는 오브젝트들의 이름을 저장할 변수이다.

Start 함수를 통해서 변수들을 초기화 해준다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 void Update()
    {
        timeAfterSpawn += Time.deltaTime;
        CarSpawn();
    }
 
    void CarSpawn()
    {
        if(timeAfterSpawn >= nextSpawnTime)
        {
            carCount++;
 
            int carSequence = carCount % carName.Length;
            GameObject carObject = objectManager.MakeObject(carName[carSequence]);
 
            spawnTime = Random.Range(spawnBetTimeMin, spawnBetTimeMax);
            nextSpawnTime = timeAfterSpawn + spawnTime;
        }
    }
}
 

 

Update 함수를 통해서 timeAfterSpawn을 계속해서 증가시켜준다.

 

그리고 CarSpawn을 통해서 자동차 오브젝트를 순서대로 만들어주고, 다음 생성 시간을 정해준다.

728x90