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

إطلاق النار

الدرس 9 من 18 في دورة لعبة Unity: الدفاع عن الأبراج على Coddy.

يطلق البرج النار على هدفه fireRate مرة في الثانية. وبدلًا من استخدام مؤقّت تنازلي، يحتفظ البرج بوقت إطلاق طلقته التالية: عندما يصل Time.time إلى ذلك الوقت، يطلق البرج النار ويؤجّل الموعد بمقدار 1f / fireRate ثانية. مرشّ ينثر الماء مرتين في الثانية:

if (Time.time >= nextSpray)
{
    Spray();
    nextSpray = Time.time + 1f / spraysPerSecond;
}

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

قد يموت الهدف بينما تكون الطلقة في الجو، إذا قضت عليه طلقة برج آخر. عندها يصبح target الخاص بالطلقة مساويًا لـ null، كما هو حال كل كائنات Unity المدمّرة، ولا يبقى للطلقة هدف تطير إليه، لذا تدمّر نفسها.

challenge icon

التحدي

متوسط
  1. تُعرّف IDamageable ‏void TakeDamage(int amount). اجعل Enemy يطبّقها: تُطرح القيمة من صحته، وعندما تصبح 0 أو أقل يُدمَّر العدو.
  2. في Projectile، أضف عددًا عشريًا متسلسلًا speed (تضبطه الـprefab على 12) وpublic void Launch(Transform target, int damage)، بحيث يحتفظ بكليهما. في Update، تحرّك نحو الهدف بسرعة speed؛ وعند الوصول، استدعِ TakeDamage(damage) على الكائن الذي يطبّق IDamageable ثم دمّر المقذوف. عندما يختفي الهدف، دمّر المقذوف.
  3. في Tower، أضف عددًا صحيحًا عامًا damage، وعددًا عشريًا عامًا fireRate (عدد الطلقات في الثانية)، وprojectilePrefab متسلسلًا (من نوع Projectile). ما دام للبرج هدف، أطلق بمعدل لا يتجاوز fireRate مرة في الثانية: أنشئ المقذوف أمام الرأس بقليل، عند head.position + head.forward * 0.6f، وأطلقه نحو الهدف باستخدام قيمة الضرر الخاصة بالبرج.

يضبط ArrowTower prefab قيمة damage على 2 وfireRate على 1.5، ومقذوفه هو ArrowShot. اضغط Play، وابنِ الأبراج وأوقف الموجة الأولى، ثم اضغط Check.

جرّب بنفسك

using UnityEngine;

// يأتي لاحقًا: مقذوف ينطلق من برج إلى هدفه.
public class Projectile : MonoBehaviour
{
}
quiz iconاختبر نفسك

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

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