סיכום: צריח מודולרי
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 5 מתוך 50.
אתגר
קלבנו את שני הצריחים במטווח מחלקים. TurretControl.cs כבר מסובב כל צריח באמצעות החצים שמאלה וימינה, ו־Shell.cs מטיס פגז קדימה. בסצנה יש ל־Turret1 רכיב Cannon ו־Ammo עם 4 פגזים, ול־Turret2 רכיב TwinCannon ו־Ammo עם 3 פגזים. כתבו את החלקים:
- Ammo: משתנה
shellsמסוג int ציבורי ומתודה ציבוריתbool Take(). אם נשאר פגז, היא משתמשת באחד ומחזירהtrue. אם לא נשארו פגזים, היא מתעדת את שם האובייקט ואתis empty, למשלTurret2 is empty, ומחזירהfalse. - Weapon: רכיב מופשט שתמיד מצורף אליו רכיב Ammo, עם
shellPrefabציבורי (מסוג GameObject), cooldownציבורי מסוג float (המפקח מגדיר אותו ל־1) ומתודה ציבוריתPull(). לחיצה במהלך זמן ההמתנה לא עושה דבר ולא משתמשת בפגז. אחרת, אםTake()נותנת פגז, זמן ההמתנה מתחיל ו־Fire()מופעלת — מתודה מופשטת שכל נשק כותב. - Cannon יורה פגז אחד מנקודה שנמצאת יחידה אחת לפני הצריח. TwinCannon יורה שני פגזים תמורת פגז תחמושת אחד, מנקודה שנמצאת 0.4 שמאלה ו־0.4 ימינה מאותה נקודה. פגז מתחיל ב־
transform.position + transform.rotation * offset, כשהוא מסובב כמו הצריח (transform.rotation), כאשרoffsetהוא הנקודה כפי שהיא נראית מהצריח, למשלnew Vector3(0f, 0f, 1f). - ב־TurretControl, מקש הרווח מפעיל את ההדק של כל
Weaponשמותקן בצריח.
לחצו על Play, סובבו וירו עד ששני הצריחים יתרוקנו, ואז לחצו על Check.
נסו בעצמכם
using UnityEngine;
// מה שמשותף לכל כלי הנשק של הצריח.
public class Weapon : MonoBehaviour
{
}
כל השיעורים ביחידה ארכיטקטורת משחקים ב-Unity
1רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיס לאויברכיבים מופשטיםרכיבים שעובדים יחדסיכום: צריח מודולרי