برنامج تعليمي لهجوم المشاجرة ثنائي الأبعاد من أجل الوحدة

يوفر Unity Engine منصة شاملة لإنشاء الألعاب ثنائية وثلاثية الأبعاد. أحد العناصر الأساسية في العديد من ألعاب الحركة هو الهجوم المشاجرة. في بيئة ثنائية الأبعاد، يتكون مثل هذا الهجوم غالبًا من شخصية تقوم بتلويح سلاح أو إلقاء لكمة، ويمكن تنفيذه باستخدام مجموعة من الرسوم المتحركة Unity والفيزياء وأدوات البرمجة النصية.

المتطلبات الأساسية

  • Unity المحرك تم تركيبه وإعداده.
  • الإلمام الأساسي بواجهة Unity ومساحة 2D.

1. إعداد المشروع والمشهد

  • أنشئ مشروعًا ثنائي الأبعاد Unity جديدًا (إذا لم تقم بذلك بعد).
  • استيراد أو إنشاء كائن حرف. ضعه في المشهد

2. إعداد الرسوم المتحركة لهجوم المشاجرة

  • في نافذة المشروع، انقر بزر الماوس الأيمن وأنشئ ملف "Animator Controller". سمها "CharacterAnimator".
  • قم بتعيين الرسوم المتحركة هذه للشخصية عن طريق تحديد الشخصية وسحب الرسوم المتحركة إلى المكون "Animator".
  • افتح نافذة الرسوم المتحركة. بعد تحديد الشخصية، قم بإنشاء رسم متحرك جديد باسم "MeleeAttack".
  • من أجل التبسيط، لنفترض أن هذا الهجوم هو لكمة سريعة. قم بتحريك الكائن لمحاكاة هذا الإجراء.

3. إنشاء صندوق الهجوم

  • أضف GameObject فارغًا كطفل إلى الشخصية. سيكون هذا بمثابة صندوق الضرب للهجوم.
  • قم بإرفاق a "Box Collider 2D" إلى GameObject الفارغ. اضبط حجمها وموضعها ليتناسب مع المكان الذي ستضرب فيه الشخصية أثناء الضربة.
  • قم بإلغاء تنشيط صندوق الوصول عن طريق إلغاء تحديد المربع "Active" الخاص به. وهذا يضمن تنشيطه فقط أثناء الرسوم المتحركة للهجوم.

4. كتابة منطق الهجوم

  • قم بإنشاء سكريبت جديد، وقم بتسميته "MeleeAttack" ثم الصق الكود أدناه داخله:

'MeleeAttack.cs'

using UnityEngine;

public class MeleeAttack : MonoBehaviour
{
    private Animator animator;
    private BoxCollider2D hitbox;

    private void Start()
    {
        animator = GetComponent<Animator>();
        hitbox = transform.Find("HitboxGameObjectName").GetComponent<BoxCollider2D>();
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space)) // Attack on Space key press.
        {
            animator.SetTrigger("MeleeAttack");
            Invoke("ActivateHitbox", 0.2f); // Activate hitbox after 0.2 seconds.
            Invoke("DeactivateHitbox", 0.4f); // Deactivate hitbox after 0.4 seconds.
        }
    }

    void ActivateHitbox()
    {
        hitbox.gameObject.SetActive(true);
    }

    void DeactivateHitbox()
    {
        hitbox.gameObject.SetActive(false);
    }
}
  • أرفق البرنامج النصي "MeleeAttack" بالشخصية الرئيسية .
  • اضبط توقيت تفعيل وإلغاء تنشيط صندوق الوصول بناءً على animation.
  • قم بتعيين مصادم hitbox إلى Hitbox variable.

5. التعامل مع الاصطدامات

  • قم بتغيير علامات كائنات لعبة العدو إلى "Enemy".
  • قم بإنشاء سكريبت جديد، وقم بتسميته "Hitbox" ثم الصق الكود أدناه داخله:

'Hitbox.cs'

using UnityEngine;

public class Hitbox : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Enemy"))
        {
            // Damage or destroy the enemy.
            Destroy(collision.gameObject);
        }
    }
}
  • قم بإرفاق البرنامج النصي "Hitbox" بكائن hitbox.

الأسئلة التي يجب معالجتها:

  1. كيف يعرف صندوق الوصول متى يتم التنشيط أثناء الرسوم المتحركة؟ : يتم تنشيط صندوق الوصول بواسطة وظيفة 'Invoke' في البرنامج النصي 'MeleeAttack.cs'. يمكن تعديل التوقيت بناءً على الإطار الذي من المفترض أن يهبط فيه الهجوم.
  2. ماذا يحدث إذا اصطدم صندوق الإصابة بعدة أعداء في وقت واحد؟ : باستخدام البرنامج النصي 'Hitbox' المتوفر، سيتم تدمير كل عدو يحمل علامة "Enemy" يصطدم بصندوق الإصابة. اضبط البرنامج النصي لإدارة الضرر أو التأثيرات الأخرى.
  3. هل يمكن تغيير زر الهجوم من مفتاح المسافة؟ : نعم، في البرنامج النصي 'MeleeAttack.cs'، السطر if ('Input.GetKeyDown(KeyCode.Space)') يتحقق من الضغط على مفتاح المسافة. استبدل 'KeyCode.Space' بقيمة 'KeyCode' أخرى لتغيير زر الهجوم.

خاتمة

يوفر هذا الدليل إطارًا أساسيًا لتنفيذ هجوم المشاجرة ثنائي الأبعاد في Unity. يمكن للتحسينات مثل إضافة المؤثرات الصوتية والملاحظات المرئية وتحسين منطق اكتشاف الضربات أن تزيد من تعزيز تجربة الهجوم المشاجرة.