دفاع الأبراج المصغّر
جزء من قسم هندسة الألعاب في Unity في رحلة Unity على Coddy. الدرس 61 من 64.
تزحف الأعداء على الطريق نحو قاعدتك، ويحرسها برج واحد. يطلق البرج مقذوفات على أقرب عدو إليه ما دام ضمن المدى، وكل عدو يقضي عليه يمنحك ذهبًا. يُنفق الضغط على مفتاح المسافة الذهب على المستوى التالي للبرج: يصل كل مستوى إلى مدى أبعد، أو يطلق بسرعة أكبر، أو يسبب ضررًا أشد. إذا وصل عدو إلى القاعدة، فإنه يتجاوز دفاعاتها. بيانات المستويات هي بيانات اللعبة التي يضبطها المصمم في أصل، من دون تعديل الشيفرة، ويطلق البرج عددًا كبيرًا من المقذوفات، لذا يعيد استخدامها من مجموعة بدلًا من إنشاء مقذوف وتدميره مع كل طلقة.
اكتب نصين برمجيين: TowerData، نوع الأصل، وTower. النصوص البرمجية Creep وBolt وCreepSpawner جاهزة، وكذلك Nearest وShow الخاصتان بالبرج.
التحدي
صعبأكمل البرج؛ Nearest(range) وShow() جاهزتان.
TowerLevel: قابل للتسلسل، ويحتوي علىrangeوfireEveryوdamageوcostعامة. يحتويTowerDataعلىpublic List<TowerLevel> levels.- كل
fireEveryثانية، إذا عثرNearest(range)على زاحف، فضع قذيفة منObjectPool<Bolt>عند البرج:bolt.Launch(creep, damage, pool.Release). - استدعِ
Show()بعد أن يمنحCreep.Killedمكافأةbounty، وبعد أن يشتري الضغط على Space المستوى التالي مقابلcostالخاص به، مع تسجيلTower level 2.
اضغط على «العب» وطوّر البرج. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Pool;
using TMPro;
public class Tower : MonoBehaviour
{
[SerializeField] private TowerData data;
[SerializeField] private Bolt boltPrefab;
[SerializeField] private TMP_Text infoText;
private int level;
private int gold;
// جاهز: أقرب creep إلى البرج ضمن النطاق، أو null.
Creep Nearest(float range)
{
Creep nearest = null;
float best = Mathf.Infinity;
foreach (Collider hit in Physics.OverlapSphere(transform.position, range))
{
if (hit.TryGetComponent(out Creep creep))
{
float distance = Vector3.Distance(transform.position, creep.transform.position);
if (distance < best)
{
best = distance;
nearest = creep;
}
}
}
return nearest;
}
// جاهز: يعرض المستوى والذهب، مثل Level 1, 0 gold.
void Show()
{
infoText.text = "Level " + (level + 1) + ", " + gold + " gold";
}
}
جميع دروس هندسة الألعاب في Unity
1المكوّنات، لا التسلسلات الهرمية
مكوّنات صغيرةنص برمجي أساسي للعدومكوّنات مجرّدةالمكوّنات تعمل معًامراجعة: برج معياريمراجعة: مدفع مزدوج4البيانات المُسلسلة
الأصناف القابلة للتسلسلالقوائم في Inspectorالتعدادات في Inspectorمراجعة: جدول الغنائممراجعة: اختيار الغنائم عشوائيًا2الواجهات في Unity
IDamageableالواجهات وTryGetComponentGetComponentsمراجعة: مفتاح التفاعلمراجعة: أقرب عنصر ضمن النطاقتدرّب بنفسك: Playground لـ Unity