본문 바로가기
TIL

내일배움캠프 3일차 TIL

by vvin39 2025. 4. 9.

📌 풍선을 지켜라

네모가 풍선에 닿으면 끝! 오래 살아남는 게 목표

 

Rise Up!이란 게임을 유사하게 만들어보면서, 유니티의 기초 다지기

 

마우스로 제어하기

마우스 포인터를 따라 움직이게 하기

→ Mouse의 좌표계를 카메라 좌표계로 바꾸고 Shield의 위치에 넣어주기

using UnityEngine;
 public class Shield : MonoBehaviour
 {
    void Update()
    {
        Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
 	transform.position = mousePos;
    }
 }

베스트 스코어 기록

데이터 보관

  • 데이터 저장하기
    PlayerPrefs.SetFloat("bestScore", 어떤숫자값 );
    PlayerPrefs.SetString("bestScore", 어떤문자열 );
  • 데이터 불러오기
    어떤숫자값 = PlayerPrefs.GetFloat("bestScore");
    어떤문자열 = PlayerPrefs.GetString("bestScore");
  • 데이터 저장했는지 확인
    PlayerPrefs.HasKey("bestScore") 있으면 true, 없으면 false
  • 데이터 모두 지우기
    PlayerPrefs.DeleteAll();

로직

if (최고 점수가 있다면)
 {
 	 if(최고 점수 < 지금 점수)
     {
     	현재 점수를 최고 점수에 저장한다.
		현재 점수를 최고 점수에 보여준다.
     }
 	else
 	{
 		저장된 최고 점수를 보여준다.
 	}
 }
 else
 {
 	if (최고 점수 < 지금 점수)
    {
    	현재 점수를 최고 점수에 저장한다.
        현재 점수를 최조 점수에 보여준다.
    }
 }

애니메이션 전환

  • 풍선이 터지면서 게임 끝내기
    →  터지는 애니메이션을 만들어두고 풍선이 네모와 닿으면 전환
  • Parameters에 bool 형식의 isDie 만들기
  • transition 클릭하고 has exit time 체크 해제 → 즉시 전환
  • GameOver() 할 때, is Die 값 바꿔주기

 

📌 고양이 밥주기 게임

HP바

  • 기본 에너지 세팅
  • 밥과 고양이가 충돌하면 에너지 올라가게 하기 + 밥 없애기
  • 에너지와 full이 같아지면 배부름
private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.gameObject.CompareTag("Food"))
    {
        energy += 1.0f;
        Destroy(collision.gameObject);
    }
    else
    {
    	Debug.Log("배가 다 찼어요");
    }
}

레벨 구성하기

  • 5마리 당 레벨 1씩 올리기
  • 고양이가 배부를 때 AddScore() 함수 부르기
    →  옆으로 빠질 때 계속 점수가 올라가기 때문에 수정필요
  • 상태를 is Full로 만들고 제어
 bool isFull = false;
 private void OnTriggerEnter2D(Collider2D collision)
 {
    if (collision.gameObject.CompareTag("Food"))
	{
        if(energy < full)
        {
        	energy += 1.0f;
            Destroy(collision.gameObject);
            front.localScale = new Vector3(energy / full, 1.0f, 1.0f);
            
            if(energy == 5.0f)
            {
            	if(isFull)
                {
                    isFull = true;
					hungryCat.SetActive(false);
                    fullCat.SetActive(true);
                    Destory(gameObject, 3.0f);
                    GameManager.Instance.AddScore();
                }
            }
	}
    }
 }

 

💡 느낀 점

  • PlayerPrefs를 활용해 게임 데이터를 저장하는 흐름이 재밌었다. 간단한 기능이지만 게임에 진짜 기록이 남는 느낌을 줬다.
  • 조건에 따라 상태가 바뀌고, UI가 반응하도록 만드는 방식이 재미있었다. 다양한 요소가 유기적으로 연결되어 작은 게임이라도 제대로 된 게임처럼 보이게 되는 구간이었다고 느꼈다.

.

 

 

'TIL' 카테고리의 다른 글

구조체(struct) vs 클래스(class)  (0) 2025.04.14
내일배움캠프 5일차 TIL  (0) 2025.04.11
내일배움캠프 4일차 TIL  (0) 2025.04.10
내일배움캠프 2일차 TIL  (0) 2025.04.08
내일배움캠프 1일차 TIL  (0) 2025.04.07

최근댓글

최근글

skin by © 2024 ttuttak