오늘의 학습 키워드
1. 개인과제

우리팀에서는 쿠키런을 오마주 해서 만들기로했고,
내가 맡은 역할은 GameManager이다.
그에 있어서 구현해야되는 부분은
- 일정 시간마다 장애물의 생성 빈도 증가, 속도 증가
- 난이도 상승에 따라 플레이어 반응 시간 줄어듦 (예: 점프 타이밍이 더 짧아짐)
- GameManager가 시간 기준으로 난이도 조절을 수행
이다.
그래서
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
private bool isGameOver = false;
private float timeSinceLastDifficultyIncrease = 0f;
[Header("난이도 설정")]
public float difficultyIncreaseInterval = 10f; // 난이도 상승 주기
public float obstacleSpawnRate = 2f; // 초기 스폰간격 (초)
public float obstacleSpeed = 5f; // 초기 장애물 속도
public float playerGodMode = 1f; // 초기 무적 시간 (초)
[Header("난이도 변화량")]
public float spawnRateDecrease = 0.1f;
public float speedIncrease = 0.5f;
public float playerGodModeDecrease = 0.05f;
private int score = 0;
private UIManager uiManager;
//UI 매니저 생성후 연결해주세요
private void Awake()
{
if (Instance == null) Instance = this;
else Destroy(gameObject);
uiManager = FindObjectOfType<UIManager>();
}
private void Start()
{
uiManager.UpdateScore(0);
}
private void Update()
{
timeSinceLastDifficultyIncrease += Time.deltaTime;
if (timeSinceLastDifficultyIncrease >= difficultyIncreaseInterval)
{
IncreaseDifficulty();
timeSinceLastDifficultyIncrease = 0f;
}
}
private void IncreaseDifficulty()
{
//스폰 간격 줄임. 근데 최소값보장
obstacleSpawnRate = Mathf.Max(0.5f, obstacleSpawnRate - spawnRateDecrease);
// 속도는 계속 증가 가능
obstacleSpeed += speedIncrease;
// 무적시간은 너무낮아지지않게 최소값보장.
playerGodMode = Mathf.Max(0.3f, playerGodMode - playerGodModeDecrease);
}
public void AddScore(int value)
{
if (!isGameOver)
{
score += value;
uiManager.UpdateScore(score);
}
}
public void GameOver()
{
if (isGameOver) return;
isGameOver = true;
//게임정지
Time.timeScale = 0f;
uiManager.SetRestart();
}
public void RestartGame()
{
Time.timeScale = 1f;
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
//GameOverPanel GameManager연결해주세요.
//GameOverUI속 Button에 GameManager.RestartGame()연결해주
}
이런식으로 짯다.
그리고 그 와중에 GitHub가 터져서 다시만들었다...