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

إلحاق الضرر بكل شيء

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

challenge icon

التحدي

متوسط

أصبح القتال الآن في الاتجاهين. احتفظ بكل شيء من الدروس السابقة. لم تعد الأعداء تحمل وسومًا: فالضربة تجد ما يمكنها إلحاق الضرر به عبر واجهة بدلًا من ذلك، والأعداء يؤذون البطل عبر الواجهة نفسها.

  • تعلن IDamageable عن دالة واحدة، void TakeDamage(int amount);.
  • تنفذ Enemy هذه الواجهة. أضف إليها health وdamage وattackEvery، واضبطها في Inspector (قِيَم الجندي العادي هي 2 و1 و1؛ أما المندفع فقِيَمه 1 و2 و1). تُنقص TakeDamage قيمة amount من health وتدمّر العدو عندما تصبح القيمة 0 أو أقل. في Start، احتفظ أيضًا بمرجع البطل من نوع IDamageable. في كل إطار، عندما يكون البطل على بُعد 1.2 وحدة، استدعِ TakeDamage(damage) عليه، وبحد أقصى مرة واحدة كل attackEvery ثانية.
  • تنفذ Hero هذه الواجهة، مع swingDamage (1) وmaxHealth (5) وsafeTime (1) مضبوطة في Inspector، ومع health التي تبدأ بقيمة maxHealth في Awake. تُنقص الضربة قيمة amount، وتسجل الصحة كـ Hero HP: 4، وتحمي البطل من الضربات التالية لمدة safeTime ثانية. عند وصول الصحة إلى 0، سجّل The hero falls وعطّل سكربت البطل (enabled = false). البطل الذي سقط يتجاهل الضربات.
  • لم تعد الضربة تختبر الوسوم أو تدمّر أي شيء: بل تستدعي TakeDamage(swingDamage) على كل ما يقع ضمن المدى وأمام البطل، ويحتوي على IDamageable.

اضغط Play وقاتل، ثم اضغط Check.

جرّب بنفسك

// سيُكمل درس لاحق هذا التعريف: أي شيء يمكن أن يتعرض للضرر.
public interface IDamageable
{
}

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