패턴이 이번 게임 중 최고난도 ^^. 일정한 곳에서 패턴을 생성하고, 일정한 곳에서 패턴을 파괴시킨다. 간단한 거 아니야? 싶겠지만, 클로버와 함께하면 다양한 문제가 발생한다... 클로버에 맞춰서 수정하는 건 앞으로 할 예정.

여튼 레츠고.
하나의 패턴이 x축 -30에 도달 시 Pattern Spawn Point에서 새로운 패턴을 생성하며, 하나의 패턴이 생성된지 15초가 지나면 그 패턴은 파괴된다. (오브젝트 풀로 만들걸! 차후에 오브젝트 풀로 바꿀 예정이다.)


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnPoint : MonoBehaviour
{
public GameObject[] prefabToSpawn;
private GameObject newPattern;
public float spawnThresholdX = -30f;
public float destroyThresholdX = -70f;
public void Start()
{
SpawnObject();
}
private void Update()
{
if (newPattern != null)
{
Destroy(newPattern, 15.0f);
// Check if the current pattern's x position is less than or equal to the spawn threshold
if (newPattern.transform.position.x <= spawnThresholdX)
{
SpawnObject();
}
}
}
public GameObject SpawnObject()
{
if (prefabToSpawn != null && prefabToSpawn.Length > 0)
{
int index = Random.Range(0, prefabToSpawn.Length);
newPattern = Instantiate(prefabToSpawn[index], transform.position, Quaternion.identity);
return newPattern;
}
return null;
}
}
원래는 x축이 -80에 도달하면 그 패턴을 삭제 시키고 싶었다. 근데 그러면 클로버를 밟고 뒤로 가면 이미 패턴이 삭제되어 있는 경우도 있고, 만든지 2주정도 지나서 잘 기억이 안 나는데 패턴이 제대로 생성이 안되는 오류가있었다. 그래서 일정 시간이 지나면 파괴되도록 바꿨다.
PrefabToSpawn에 미리 만들어둔 10개의 Prefab Pattern이 있다. 그래서 이 배열에서 랜덤으로 하나의 프리팹 패턴이 패턴 생성기의 위치에서 Instantiate된다. 참고로 Quaternion.identity은 회전 없음을 나타냄.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PatternManager : MonoBehaviour
{
public SpawnPoint patternSpawnPoint;
public static PatternManager sharedInstance = null;
private void Awake()
{
if(sharedInstance != null && sharedInstance != this)
{
Destroy(gameObject);
}
else
{
sharedInstance = this;
}
}
private void Start()
{
SetUpScene();
}
public void SetUpScene()
{
SpawnPattern();
}
public void SpawnPattern()
{
if(patternSpawnPoint != null)
{
GameObject pattern = patternSpawnPoint.SpawnObject();
}
}
}
패턴 매니저는 싱글톤이어야지! 혹시 패턴 만드는거 관련 기능이 더 추가되면 SetUpScene()에서 관리할 예정. SpawnPattern을 통해 패턴을 생성하자. patternSpawnPoint.SpawnObject()를 하면 gameObject인 newPattern이 return 된다. 그걸 gameObject pattern에 넣으면 끝!
그럼 게임에서 패턴 생성기를 내가 원하는 위치에 놔준다. 그럼 패턴이 잘 생성된다! 나같은 경우는 패턴 생성기에서 x축으로 -30인 곳에서 패턴이 생성되게끔 변경했다. x축 0에서 생성시키니깐 패턴 길이가 안 맞아서 고양이가 어처구니 없게 죽는 일이 발생해서...ㅎ
여튼 앞으론 클로버도 거의 완성이겠다, 움직이는 카메라에 맞춰 패턴 생성기도 좀 손볼거다. 끝!