Menu
CoddyTech
flag Ar iconالعربيةdown icon

الدفاع عن البرج: نسخة مبسطة

جزء من قسم هندسة الألعاب في Unity في رحلة Unity على Coddy. الدرس 48 من 50.

تسير المخلوقات على الطريق نحو قاعدتك، ويحرسها برج واحد. يطلق البرج مقذوفات على أقرب مخلوق إليه ما دام ضمن المدى، وكل مخلوق يقضي عليه يمنحك ذهبًا. استخدم مفتاح المسافة لإنفاق الذهب على المستوى التالي للبرج: فكل مستوى يزيد المدى أو يسرّع إطلاق المقذوفات أو يزيد قوة ضرباتها. إذا وصل مخلوق إلى القاعدة، فسيتجاوزها. مستويات البرج هي بيانات اللعبة التي يضبطها المصمم في أحد الأصول دون المساس بالشفرة، ويطلق البرج الكثير من المقذوفات، لذا يعيد استخدامها من مجموعة بدلًا من إنشاء مقذوف وتدميره مع كل طلقة.

اكتب نصين برمجيين: TowerData، وهو نوع الأصل، وTower. أما Creep وBolt وCreepSpawner فهي جاهزة.

challenge icon

التحدي

صعب

يوفّر 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;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس هندسة الألعاب في Unity