الدفاع عن البرج: نسخة مبسطة
جزء من قسم هندسة الألعاب في Unity في رحلة Unity على Coddy. الدرس 48 من 50.
تسير المخلوقات على الطريق نحو قاعدتك، ويحرسها برج واحد. يطلق البرج مقذوفات على أقرب مخلوق إليه ما دام ضمن المدى، وكل مخلوق يقضي عليه يمنحك ذهبًا. استخدم مفتاح المسافة لإنفاق الذهب على المستوى التالي للبرج: فكل مستوى يزيد المدى أو يسرّع إطلاق المقذوفات أو يزيد قوة ضرباتها. إذا وصل مخلوق إلى القاعدة، فسيتجاوزها. مستويات البرج هي بيانات اللعبة التي يضبطها المصمم في أحد الأصول دون المساس بالشفرة، ويطلق البرج الكثير من المقذوفات، لذا يعيد استخدامها من مجموعة بدلًا من إنشاء مقذوف وتدميره مع كل طلقة.
اكتب نصين برمجيين: TowerData، وهو نوع الأصل، وTower. أما Creep وBolt وCreepSpawner فهي جاهزة.
التحدي
صعبيوفّر Inspector لـ Tower data (أصل Arrow)، وboltPrefab وinfoText. اقرأ مفتاح المسافة عبر Keyboard.current من Input System.
- في
TowerData.cs: صنفTowerLevelيمكن لـ Inspector عرضه، ويتضمنpublic float rangeوpublic float fireEveryوpublic int damageوpublic int cost(سعر الوصول إلى ذلك المستوى)، وTowerData، وهو ScriptableObject يتضمن إدخالًا في قائمة Create وpublic List<TowerLevel> levels. يحتوي أصل Arrow على ثلاثة مستويات: المدى 4، وكل 1 s، والضرر 1، والتكلفة 0؛ المدى 5، وكل 0.6 s، والضرر 1، والتكلفة 6؛ المدى 6، وكل 0.4 s، والضرر 2، والتكلفة 12. - يبدأ البرج بالمستوى الأول و0 من الذهب، ويعرض
infoTextكليهما بالشكلLevel 1, 0 goldكلما تغيّرا. - عندما تمر ثواني
fireEveryالخاصة بالمستوى منذ الطلقة الأخيرة ويكون أحد الزواحف ضمن المدى (أي يكون مصادم الزاحف ضمنrangeمن البرج، كما تجدهPhysics.OverlapSphere)، يطلق البرج النار على أقرب زاحف إليه. يأخذ سهمًا منObjectPool<Bolt>، ويضعه عند البرج، ويستدعيbolt.Launch(creep, damage, pool.Release): يستدعي السهم الوسيط الأخير عند انتهائه، فيعيده إلى المجموعة. يُعطَّل السهم أثناء انتظاره في المجموعة ويُفعَّل عند أخذه. - يمنح كل زاحف يموت مكافأته
bountyمن الذهب: استمع إلى الحدث الساكنCreep.Killed. - يشتري مفتاح المسافة المستوى التالي، إذا كان هناك مستوى تالٍ وكان الذهب يغطي
cost: تُخصم التكلفة من الذهب، ويرتقي البرج ويسجل ذلك بالشكلTower level 2. وإلا فلن يفعل مفتاح المسافة شيئًا.
اضغط Play، واصمد على الطريق وطوّر البرج، ثم اضغط Check.
جرّب بنفسك
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;
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس هندسة الألعاب في Unity
1المكوّنات لا التسلسلات الهرمية
مكوّنات صغيرةسكربت أساسي للعدومكوّنات مجرّدةتعمل المكوّنات معًامراجعة: برج دفاعي معياري4البيانات المتسلسلة
الأصناف القابلة للتسلسلالقوائم في Inspectorالتعدادات في Inspectorمراجعة: جدول الغنائم10مشروع: الناجي في الساحة
البطلأنواع الأعداء