إلحاق الضرر بكل شيء
جزء من قسم هندسة الألعاب في Unity في رحلة Unity على Coddy. الدرس 43 من 50.
التحدي
متوسطأصبح القتال الآن في الاتجاهين. احتفظ بكل شيء من الدروس السابقة. لم تعد الأعداء تحمل وسومًا: فالضربة تجد ما يمكنها إلحاق الضرر به عبر واجهة بدلًا من ذلك، والأعداء يؤذون البطل عبر الواجهة نفسها.
- تعلن
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
1المكوّنات لا التسلسلات الهرمية
مكوّنات صغيرةسكربت أساسي للعدومكوّنات مجرّدةتعمل المكوّنات معًامراجعة: برج دفاعي معياري4البيانات المتسلسلة
الأصناف القابلة للتسلسلالقوائم في Inspectorالتعدادات في Inspectorمراجعة: جدول الغنائم10مشروع: الناجي في الساحة
البطلأنواع الأعداء