חזרה: מצבי הדלת
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 32 מתוך 50.
אתגר
בינונידלת של טירה עם מנעול. החצים מזיזים את Player, והמפתח המוזהב קורא ל־door.Unlock() כשהשחקן מרים אותו (שניהם מוכנים). IState וה־StateMachine של הפרק נמצאים בפרויקט. בקובץ Door.cs נמצאים הערכים של Inspector (closedY 1.5, openY 4, speed 2, stayOpen 2, reach 2.5), שדה machine והפונקציה PlayerNear(). תנו לדלת חמישה מצבים, כמחלקות בקובץ DoorStates.cs, בשם LockedState, ClosedState, OpeningState, OpenState ו־ClosingState:
- הדלת מתחילה במצב Locked. לחיצה על Space בקרבתה (
PlayerNear()) רק מתעדת ביומןLocked. הפונקציהUnlock()מעבירה דלת נעולה למצב Closed ולא עושה דבר באף מצב אחר. - Closed: לחיצה על Space בקרבת הדלת מתחילה לפתוח אותה.
- Opening: הדלת עולה במהירות
speedעד שערך ה־y שלה הואopenY, ואז היא במצב Open. - Open: לאחר
stayOpenשניות, הדלת מתחילה להיסגר. - Closing: הדלת יורדת במהירות
speedעד שערך ה־y שלה הואclosedY, ואז היא במצב Closed. לחיצה על Space בקרבתה בזמן שהיא יורדת פותחת אותה שוב מהמקום שבו היא נמצאת.
לחצו על Play, נסו לפתוח את הדלת הנעולה, קחו את המפתח, פתחו את הדלת ועברו דרכה, ואז לחצו על Check.
נסו בעצמכם
using UnityEngine;
// LockedState, ClosedState, OpeningState, OpenState ו-ClosingState
כל השיעורים ביחידה ארכיטקטורת משחקים ב-Unity
1רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיס לאויברכיבים מופשטיםרכיבים שעובדים יחדסיכום: צריח מודולרי