Menu
CoddyTech

Hayatta Kalma Gecesi

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 56 / 56.

Bir kurtulan karanlık bir arazide durur ve yarasalar bütün gece peşine düşer; arazinin dört köşesinden birinden birkaç saniyede bir yeni bir yarasa gelir. Her yarasa doğrudan kurtulana doğru uçar ve ona ilk ulaşan yarasa geceyi sona erdirir. Üstteki bir saat şafağa kalan saniyeleri sayar: O zamana kadar dayanırsan kazanırsın. Duraklat düğmesi her şeyi dondurur ve gece sona erdiğinde Tekrar oyna yeni bir gece başlatır.

Kurtulanı Move eylemiyle yürüten Player betiği yazılmıştır. GameManager ve Bat yaz.

challenge icon

Görev

Zor

Inspector, GameManager'a nightLength (15), spawnEvery (2), batPrefab, spawnPoints (dört köşe), dawnText, pauseButton, pausePanel, endPanel, endText ve restartButton değerlerini verir.

  • Bir singleton'dır (public static GameManager Instance) ve içinde Playing, Paused, Won ve Lost değerlerini içeren bir public enum State ile bir public State state bulunur. Gece, Playing durumunda başlar.
  • Playing durumundayken: kalan saniyeler nightLength değerinden geriye sayar ve yukarı yuvarlanarak Dawn in 12 biçiminde gösterilir; her spawnEvery saniyede, rastgele seçilen spawnPoints noktalarından birinde bir yarasa belirir. Süre bittiğinde gece Won olur.
  • pauseButton, Playing durumunu Paused durumuna ve tekrar Playing durumuna geçirir. Paused, oyunun zamanını durdurur (Time.timeScale 0) ve pausePanel panelini gösterir; yeniden Playing durumuna geçildiğinde zamanı yeniden başlatır ve paneli gizler. Won veya Lost durumundayken hiçbir şey yapmaz.
  • Herkese açık Lose(), Playing durumundaki bir geceyi Lost durumuna geçirir.
  • Won ve Lost, oyunun zamanını durdurur ve endPanel panelini gösterir; endText metni You survived the night! veya The bats got you olur.
  • restartButton, sahneyi yeniden yükleyerek yeni bir gece başlatır.

Inspector, Bat'e speed (2) ve reach (1) değerlerini verir. Gece Playing durumundayken yarasa, kendi yüksekliğini koruyarak oyuncuya (Player etiketi verilmiş) speed hızında uçar. Yerdeki düzlemde oyuncuya reach kadar yaklaştığında Lose() çağrısını yapar.

Play'e bas ve şafağa kadar dayanmayı dene, ardından Check'e bas.

Kendin dene

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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler