ליל הישרדות
חלק מהיחידה בונים משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 56 מתוך 56.
שורד עומד בשדה חשוך, ועטלפים מגיעים אליו לאורך כל הלילה, אחד חדש מדי כמה שניות מאחת מארבע פינות השדה. כל עטלף עף ישר לעבר השורד, והעטלף הראשון שמגיע אליו מסיים את הלילה. שעון בחלק העליון סופר את השניות עד עלות השחר: החזק מעמד עד אז ותנצח. כפתור השהיה מקפיא הכול, וכשהלילה מסתיים, לחיצה על ״שחק שוב״ מתחילה לילה חדש.
הסקריפט Player, שמזיז את השורד באמצעות הפעולה Move, כבר כתוב. כתבו את GameManager ואת Bat.
אתגר
קשההחלון 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.timeScale0) ומציג את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;
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה בונים משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעות