카드 게임인 만큼 속도감 있게 만들어 볼까요?
- 30초간 플레이하면 게임이 종료되는 시스템을 추가해봅시다!
GameManager.cs 에 30초가 지나면 게임이 종료되도록 기능을 추가해주어야합니다.
현재, GameManager 스크립트입니다.
public class GameManager : MonoBehaviour
{
#region singleton
public static GameManager Instance;
private void Awake()
{
if(Instance == null)
{
Instance = this;
}
}
#endregion
public Text timeText;
float time = 0.0f;
public Card firstCard;
public Card secondCard;
public int cardCount = 0;
public GameObject endText;
public AudioSource audioSource;
public AudioClip clip;
private void Start()
{
Time.timeScale = 1.0f;
audioSource = GetComponent<AudioSource>();
}
private void Update()
{
time += Time.deltaTime;
timeText.text = time.ToString("N2");
}
public void IsMatched()
{
if(firstCard.index == secondCard.index)
{
audioSource.PlayOneShot(clip);
firstCard.DestoyCard();
secondCard.DestoyCard();
cardCount -= 2;
if (cardCount == 0)
{
endText.SetActive(true);
Time.timeScale = 0f;
}
}
else
{
firstCard.CloseCard();
secondCard.CloseCard();
}
firstCard = null;
secondCard = null;
}
}
Update가 호출될때마다 time 변수에 time.deltaTime, 즉 한번 라이프사이클이 돌아가는데 걸린 시간이 더해지고 있습니다.
이 변수를 사용해서 30초가 지나면 게임이 끝나도록 만들 수 있을것 같습니다.
또한 30초가 지났는지 계속 확인해야할 필요가 있습니다.
그렇기때문에 Update 에서 30초가 지났는지 확인하고, 30초가 지나면 게임을 종료하도록 해야합니다.
해당 스크립트의 Update문만 보도록 하겠습니다.
private void Update()
{
time += Time.deltaTime;
timeText.text = time.ToString("N2");
if(time >= 30f)
{
endText.SetActive(true);
Time.timeScale = 0f;
}
}
Update에 if문을 추가해주었습니다.
time 변수가 30보다 크거나 같아지면, endText 오브젝트를 활성화하고, timeSacle을 0으로 만들어 게임을 멈춤니다.
조건문을 30이상으로 잡아야하는 이유는 time.deltaTime을 time 변수에 더하는것이기 때문에, 정확히 30이 나오지 않을가능성이 더 높기 때문입니다.
현재는 게임종료 방식이 게임클리어, 시간 초과 2종류이기 때문에 각각 사용해도 무관하지만 프로젝트의 규모가 커질경우 게임이 종료되는 순간이 많아질 수 있기 때문에 게임 종료를 함수화 해서 사용하는것이 유용합니다.
public class GameManager : MonoBehaviour
{
//... 생략
private void Update()
{
time += Time.deltaTime;
timeText.text = time.ToString("N2");
if(time >= 30f)
{
GameOver();
}
}
public void IsMatched()
{
//...생략
if (cardCount == 0)
{
GameOver();
}
//... 생략
}
public void GameOver()
{
endText.SetActive(true);
Time.timeScale = 0f;
}
}
'사전캠프 > Unity' 카테고리의 다른 글
구글 기반 광고 만들기 - 구글 애드몹 (0) | 2024.08.28 |
---|---|
유니티 기능 - #region, #if (0) | 2024.08.26 |
Unity 기능 - Input System (0) | 2024.08.22 |
3주차 과제 - 해적고양이 만들기 (0) | 2024.08.22 |
Unity 기능 : ScreenToWorldPoint (0) | 2024.08.22 |