البرمجة

تحسين تفاعل اللاعب مع الأبواب في Unity: تغيير زر الفأرة إلى الوسطى

في هذا السياق، يظهر السيناريو البرمجي المقدم مكتوبًا بلغة C# باستخدام محرك Unity. الهدف من السيناريو هو تحقيق تفاعل اللاعب مع أبواب اللعبة باستخدام زر الفأرة الأيسر (OnMouseDown) والفأرة الوسطى (OnMouseDrag). يتم تحديد نوع الباب بناءً على إعدادات مختلفة مثل “Normally Open”، “Locked”، “Need Equipped Object”، و”Need Activated Key”. يتم أيضًا التحقق من الشروط اللازمة لفتح الباب مثل وجود عنصر محدد في المخزن أو مفتاح مفعل.

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

csharp
// ... (الكود الحالي) public void OnMouseDown(){ if(canbeOpen){ startPlayerRot = playerTransform.eulerAngles.y; } } // قم بحذف دالة OnMouseUp الحالية واستبدالها بالكود التالي public void OnMouseOver(){ if (Input.GetMouseButtonDown(2)) // زر الفأرة الوسطى { if(canbeOpen){ startRot.y = currRot; delta = 0; if(FPH_InventoryManager.equippedItem == neededObject_Name && !hasBeenUnlocked){ // ... (الكود الحالي للفتح) } } } } // ... (الكود الحالي) void OnMouseDrag(){ if(canbeOpen){ playerRot = playerTransform.eulerAngles.y; delta = (playerRot - startPlayerRot) * openDirection; currRot = (startRot.y + (delta * factor)); currRot = Mathf.Clamp(currRot, minRot, maxRot); transform.eulerAngles = new Vector3(startRot.x, currRot, startRot.z); if(FPH_InventoryManager.equippedItem == neededObject_Name && !hasBeenUnlocked){ // ... (الكود الحالي للفتح) } } } // ... (الكود الحالي)

قم بنسخ الكود الجديد واستبدله في المكان المناسب في ملف السيناريو البرمجي. ستجد أن الفأرة الوسطى الآن تفعل نفس الوظائف التي كانت تقوم بها الفأرة الأيسر في السيناريو الأصلي. يمكنك تجربة السيناريو في Unity للتحقق من تأثير التغييرات.

المزيد من المعلومات

هذا السيناريو البرمجي مصمم لتحقيق تفاعل لاعب مع أبواب اللعبة في بيئة Unity. السيناريو يتضمن عدة عناصر ومتغيرات مهمة يمكن تلخيصها كما يلي:

  1. المتغيرات:

    • factor: يحدد سرعة الحركة لفتح وإغلاق الباب.
    • minRot و maxRot: تحددان الزوايا الدنيا والعليا للباب.
    • observeKind: مصفوفة تحتوي على أنواع مختلفة من المراقبة (Normal و Closeup).
    • observeInt: متغير يستخدم في السياق التحريري.
    • secToOserve: يحدد مدة ظهور النص عند المراقبة.
    • inGameCamera و closeupCamera: مراقب الكاميرا في اللعبة.
    • removeItemWhenUsed: متغير يحدد ما إذا كان يجب إزالة العنصر بعد استخدامه.
    • hasBeenUnlockedKey: مفتاح يستخدم لتتبع ما إذا تم فتح الباب من قبل.
    • canBeObserved: يحدد ما إذا كان بإمكان اللاعب مراقبة الباب.
    • مجموعة من المتغيرات لرسائل اللغات المختلفة للتفاعلات المختلفة.
  2. الدوال:

    • Start(): تهيئة البيئة عند بدء التشغيل.
    • Update(): يتم استدعاؤها بشكل دوري لفحص شروط فتح الباب.
    • OnMouseDown(): يتم استدعاؤها عندما يتم النقر بزر الفأرة الأيسر.
    • OnMouseUp(): يتم استدعاؤها عندما يتم رفع زر الفأرة بعد النقر.
    • OnMouseDrag(): يتم استدعاؤها أثناء سحب اللاعب للفأرة.
  3. التعامل مع أنواع الأبواب:

    • تحديد نوع الباب بناءً على متغير doorType.
    • الأنواع المختلفة للأبواب تشمل “Normally Open”، “Locked”، “Need Equipped Object”، و”Need Activated Key”.
    • التحقق من توافر العناصر المطلوبة لفتح الباب.
  4. التفاعل مع اللاعب:

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

    • دعم عدة لغات مختلفة للرسائل التوضيحية، مما يتيح للاعبين تجربة اللعبة بلغتهم المفضلة.

هذا السيناريو يوفر نظامًا مرنًا لإدارة أنواع مختلفة من الأبواب وتحديد شروط وسيناريوهات فتحها. يمكن للمطورين المبتدئين الاطلاع على هذا السيناريو لتعلم كيفية تنظيم وكتابة الأكواد في بيئة Unity باستخدام لغة C#.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر