Menu
CoddyTech

ליל הישרדות

חלק מהיחידה בונים משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 56 מתוך 56.

שורד עומד בשדה חשוך, ועטלפים מגיעים אליו לאורך כל הלילה, אחד חדש מדי כמה שניות מאחת מארבע פינות השדה. כל עטלף עף ישר לעבר השורד, והעטלף הראשון שמגיע אליו מסיים את הלילה. שעון בחלק העליון סופר את השניות עד עלות השחר: החזק מעמד עד אז ותנצח. כפתור השהיה מקפיא הכול, וכשהלילה מסתיים, לחיצה על ״שחק שוב״ מתחילה לילה חדש.

הסקריפט Player, שמזיז את השורד באמצעות הפעולה Move, כבר כתוב. כתבו את GameManager ואת Bat.

challenge icon

אתגר

קשה

החלון Inspector מקצה ל-GameManager את nightLength (15), את spawnEvery (2), את batPrefab, את spawnPoints (ארבע הפינות), את dawnText, את pauseButton, את pausePanel, את endPanel, את endText ואת restartButton.

  • הוא singleton (public static GameManager Instance), ויש לו public enum State מקונן עם Playing, Paused, Won ו-Lost, וגם public State state. הלילה מתחיל במצב Playing.
  • בזמן Playing: מספר השניות שנותרו יורד מ-nightLength, ומוצג בעיגול כלפי מעלה, למשל Dawn in 12; בכל spawnEvery שניות מופיע עטלף באחת מנקודות spawnPoints, שנבחרת באקראי. כשלא נשאר זמן, הלילה מסתיים בניצחון.
  • pauseButton מחליף בין Playing ל-Paused. מצב Paused עוצר את הזמן במשחק (Time.timeScale 0) ומציג את pausePanel; חזרה למצב Playing מפעילה מחדש את הזמן ומסתירה אותו. במצב Won או Lost אין לכך השפעה.
  • קריאה ציבורית ל-Lose() מעבירה לילה במצב Playing למצב Lost.
  • מצבי Won ו-Lost עוצרים את הזמן במשחק ומציגים את endPanel, ובו endText מציג You survived the night! או The bats got you.
  • restartButton מתחיל לילה חדש באמצעות טעינה מחדש של הסצנה.

החלון Inspector מקצה ל-Bat את speed (2) ואת reach (1). בזמן שהלילה במצב Playing, עטלף עף לעבר השחקן (שמתויג Player) במהירות speed, תוך שמירה על הגובה שלו. כשהוא מגיע למרחק של 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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה בונים משחקים אמיתיים