ירי
שיעור 9 מתוך 25 בקורס משחק Unity: הגנת מגדלים של Coddy.
מגדל יורה Projectile לעבר המטרה שלו. הירייה עפה אליה בעזרת MoveTowards, עוקבת אחר המטרה כשהיא הולכת ופוגעת בה כשהיא מגיעה. אין צורך לדעת שהיא פגעה באויב: היא מבקשת IDamageable, הממשק של כל דבר שיכול לספוג נזק, כך שאפשר לירות בכל דבר שמממש אותו.
מטרה יכולה למות בזמן שירייה נמצאת באוויר. אובייקט Unity שהושמד נחשב שווה ל־null, לכן הירייה בודקת תחילה target == null ומשמידה את עצמה.
לעת עתה, מגדל יורה פעם בשנייה. הוא שומר את הזמן שבו תתרחש הירייה הבאה שלו:
if (Time.time >= nextShot)
{
Fire();
nextShot = Time.time + 1f;
}אתגר
בינוניהמגדלים יורים חצים פעם בשנייה.
Enemyמממשת אתIDamageable: הפעולהTakeDamage(int amount)מפחיתה את הערך מ־health, ומשמידה את האויב כשהערך הוא 0 או פחות.Projectile: הפעולהLaunch(Transform target, int damage)שומרת את שניהם;Updateעפה אל המטרה במהירותspeed, קוראת ל־TakeDamage(damage)עם ההגעה ומשמידה את עצמה, וגם כשהמטרה נעלמת.Tower: הוסיפוpublic int damage = 2;ואת[SerializeField] private Projectile projectilePrefab;; ירו כפי שתואר לעיל מהמיקוםtransform.position + Vector3.up.
לחצו על "שחק": החצים עפים וה־Grunts נופלים. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
using UnityEngine;
// יופיע בהמשך: קליע שעף ממגדל אל המטרה שלו.
public class Projectile : MonoBehaviour
{
}
כל השיעורים ביחידה משחק Unity: הגנת מגדלים
תרגלו בעצמכם: Unity אונליין