728x90
위에서 떨어지는 사각형의 오브젝트들을 마우스로 막아 하단 중앙의 풍선(원 오브젝트)에 닿지 않게 해야하는 게임입니다.
생존해있는동안 측정되는 시간이 곧 점수입니다.
데이터 저장 기능을 활용하여 최고 점수 기록 기능이 있습니다.
장애물(Square) 스크립트
using System.Drawing;
using UnityEngine;
using UnityEngine.SocialPlatforms.Impl;
public class Square : MonoBehaviour
{
float size; // 크기
Vector2 randomPos; // 생성 위치
void Start()
{
randomPos = new Vector2(Random.Range(-3f, 3f), Random.Range(3f, 5f));
transform.position = randomPos;
size = Random.Range(.5f, 1.5f);
transform.localScale = new Vector2(size, size);
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Balloon")) // 풍선과 충돌시 게임 끝
{
GameManager_riseUP.instance.GameEnd();
}
else if(collision.gameObject.CompareTag("DestroyCollider")) // 화변 밖에 설치한 콜라이더
{
Destroy(gameObject);
}
}
}
게임 매니저 스크립트
using UnityEngine;
using System.Collections;
using TMPro;
using UnityEngine.SceneManagement;
public class GameManager_riseUP : MonoBehaviour
{
public static GameManager_riseUP instance;
float newScore = 0;
float bestScore = 0;
[SerializeField] Animator balloon_Anim;
[SerializeField] GameObject g_retryPanel; // 재시작 패널
[SerializeField] TextMeshProUGUI textMeshPro_Time; // 남은 시간 UI 텍스트
[SerializeField] TextMeshProUGUI textMeshPro_newScore; // 이번판 점수 UI 텍스트
[SerializeField] TextMeshProUGUI textMeshPro_bestScore; // 최고 점수 UI 텍스트
[SerializeField] Transform tf_groupSquare; // 생성할 부모 객체
[SerializeField] GameObject Prefabs_Square; // 프리팹
string scoreKey = "BestScore";
private void Awake()
{
if(instance == null) { instance = this; }
}
void Start()
{
Time.timeScale = 1;
StartCoroutine(spwanSquare()); // 생성 시작
}
void Update()
{
newScore += Time.deltaTime;
textMeshPro_Time.text = newScore.ToString("F2");
}
IEnumerator spwanSquare()
{
while (true)
{
Instantiate(Prefabs_Square, tf_groupSquare);
yield return new WaitForSeconds(1f);
}
}
public void GameEnd()
{
Time.timeScale = 0f; // 게임 일시정지
balloon_Anim.SetBool("isDie", true);
textMeshPro_newScore.text = newScore.ToString("F2");
if(PlayerPrefs.HasKey(scoreKey))
{
bestScore = PlayerPrefs.GetFloat(scoreKey);
if (bestScore < newScore)
{
PlayerPrefs.SetFloat(scoreKey, bestScore);
textMeshPro_bestScore.text = newScore.ToString("F2");
}
else
{
textMeshPro_bestScore.text = bestScore.ToString("F2");
}
}
else
{
PlayerPrefs.SetFloat(scoreKey, newScore);
textMeshPro_bestScore.text = newScore.ToString("F2");
}
g_retryPanel.SetActive(true); // 재시작 패널 활성화
}
public void Retry()
{
SceneManager.LoadScene("riseUP");
}
}
쉴드 스크립트
using UnityEngine;
public class shield : MonoBehaviour
{
void Update()
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = mousePos;
}
}
Unity Play에 업로드된 제 게임을 아래 링크에서 플레이할 수 있습니다.
https://play.unity.com/ko/games/38b56561-1e7e-461e-b74b-39e59edec217/campriseup
728x90
'내일배움캠프' 카테고리의 다른 글
내일배움캠프 Unity - 사전캠프 (고양이 밥주기 게임) (0) | 2025.01.09 |
---|---|
내일배움캠프 Unity - 사전캠프 (빗물 받는 르탄이) (0) | 2025.01.07 |
내일배움캠프 Unity - 사전캠프 (팀원과 함께해요 2) (0) | 2025.01.07 |
내일배움캠프 Unity - 사전캠프 (팀원과 함께해요 1) (0) | 2025.01.07 |
내일배움캠프 Unity - 사전캠프 (기초 문법 활용해보기 4) (0) | 2025.01.07 |