Menu
CoddyTech

생존의 밤

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 56개 중 56번째.

생존자가 어두운 들판에 서 있고, 밤새 박쥐들이 생존자를 향해 날아옵니다. 몇 초마다 들판의 네 모퉁이 중 한 곳에서 새로운 박쥐가 나타납니다. 각 박쥐는 생존자를 향해 곧장 날아오며, 가장 먼저 생존자에게 도달한 박쥐가 밤을 끝냅니다. 화면 상단의 시계는 새벽까지 남은 초를 셉니다. 그때까지 버티면 승리합니다. Pause 버튼을 누르면 모든 것이 멈추고, 밤이 끝나면 Play again을 눌러 새 밤을 시작합니다.

Move 액션으로 생존자를 걷게 하는 Player 스크립트는 작성되어 있습니다. GameManager와 Bat을 작성하세요.

challenge icon

챌린지

어려움

Inspector에서 GameManager에 nightLength (15), spawnEvery (2), batPrefab, spawnPoints (네 모서리), dawnText, pauseButton, pausePanel, endPanel, endText 및 restartButton을 지정합니다.

  • 싱글톤(public static GameManager Instance)이며, Playing, Paused, Won 및 Lost를 포함하는 중첩된 public enum State와 public State state가 있습니다. 밤은 Playing 상태로 시작합니다.
  • Playing 상태에서는 남은 초가 nightLength부터 줄어들며, 올림한 값이 Dawn in 12와 같이 표시됩니다. spawnEvery초마다 spawnPoints 중 무작위로 선택한 지점에 박쥐가 나타납니다. 시간이 다 되면 밤은 Won 상태가 됩니다.
  • pauseButton을 누르면 Playing과 Paused 상태가 전환됩니다. Paused 상태에서는 게임 시간이 멈추고(Time.timeScale 0) pausePanel이 표시됩니다. 다시 Playing 상태가 되면 시간이 다시 흐르고 패널은 숨겨집니다. Won 또는 Lost 상태에서는 아무 동작도 하지 않습니다.
  • public Lose()는 Playing 상태의 밤을 Lost 상태로 만듭니다.
  • Won 및 Lost 상태에서는 게임 시간이 멈추고 endPanel이 표시되며, endText에는 You survived the night! 또는 The bats got you가 표시됩니다.
  • restartButton은 장면을 다시 불러와 새 밤을 시작합니다.

Inspector에서 Bat에 speed (2)와 reach (1)을 지정합니다. 밤이 Playing 상태인 동안 박쥐는 자기 높이를 유지하며 speed 속도로 플레이어(Player 태그 지정)를 향해 날아갑니다. 지면에서 플레이어와의 거리가 reach 이내로 가까워지면 Lose()를 호출합니다.

Play를 눌러 새벽까지 버텨 보세요. 그런 다음 Check를 누르세요.

직접 해보기

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;

public class GameManager : MonoBehaviour
{
    public float nightLength = 15f;
    public float spawnEvery = 2f;
    public GameObject batPrefab;
    public Transform[] spawnPoints;
    public TMP_Text dawnText;
    public Button pauseButton;
    public GameObject pausePanel;
    public GameObject endPanel;
    public TMP_Text endText;
    public Button restartButton;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

실제 게임 만들기의 모든 레슨