اكتشاف إدخال المستخدم

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

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

ابدأ

يستخدم هذا البرنامج التعليمي أداة Blaster التي تم إنشاؤها في إنشاء أدوات اللاعب. يمكنك اتباع تلك التعليمات لإنشاء الأداة أو يمكنك تنزيل نموذج Blaster وإدراجه في StarterPack.

يمكن إضافة النماذج إلى مخزونك لاستخدامها بين أي لعبة. لإضافة نموذج إلى لعبتك:

  1. في متصفح، افتح صفحة النموذج، وانقر على زر الحصول على. سيؤدي ذلك إلى إضافة النموذج إلى مخزونك.
  2. من قائمة نافذة في الاستوديو أو شريط أدوات علامة التبويب الرئيسية، افتح صندوق الأدوات واختر علامة التبويب المخزون.
  3. تأكد من أن القائمة المنسدلة على نماذجي.
  4. اختر نموذج Blaster لإضافته إلى اللعبة.

إنشاء معالج إجراء

أولاً، ستحتاج إلى دالة للتعامل مع متى يتم اكتشاف إدخال المستخدم.

  1. افتح LocalScript ToolController داخل أداة Blaster.

    عرض من مستكشف حيث يتم تحديد نص البرمجة ToolController داخل أداة Blaster

  2. أنشئ متغيرًا لتخزين اسم الإجراء.

    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  3. أنشئ دالة باسم onAction تستقبل ثلاثة معطيات: actionName، inputState، و inputObject. ستكون هذه هي الدالة التي تعمل عندما يتم اكتشاف إدخال المستخدم.

    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    end
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
  4. داخل الدالة، تحقق من أن actionName المعطاة تتطابق مع اسم إجراء إعادة التحميل وتأكد من أن inputState هو UserInputState.Begin (الحالة الابتدائية). هذا مهم لأن الدالة ستعمل في كل مرة يتغير فيها inputState، ولكن إعادة التحميل تحتاج فقط إلى الحدوث مرة واحدة.

    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    end
    end
  5. لجعل الأمر واضحًا عندما يقوم المستخدم بإعادة التحميل، قم بتغيير TextureId للأداة إلى "rbxassetid://6593020923" للحظة، ثم قم بتغييره مرة أخرى إلى قيمته الأصلية "rbxassetid://92628145".

    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end

ربط الإجراء

يمكن استخدام ContextActionService لربط دالة بإدخال محدد باستخدام دالة BindAction، التي تقبل عدة معطيات:

  • اسم الإجراء.
  • الدالة للتعامل مع الإجراء (تسمى أيضًا "استدعاء").
  • ما إذا كان يجب عرض زر شاشة اللمس أم لا.
  • أي عدد من Enum.KeyCodes لاكتشافها وربطها بالإجراء.

KeyCodes هي قيم تمثل أزرار إدخال مختلفة، مثل مفاتيح لوحة المفاتيح أو أزرار وحدة التحكم. تتوفر قائمة كاملة من الرموز هنا.

  1. احصل على ContextActionService في أعلى البرنامج النصي.

    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
  2. داخل دالة toolEquipped، استدعِ BindAction ومرر المعطيات التالية:

    • اسم الإجراء (RELOAD_ACTION)
    • معالج الإجراء (onAction)
    • قيمة لإنشاء زر لمسة (true)
    • ضغط مفتاح لاكتشافه (Enum.KeyCode.R)
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
  3. اختبر اللعبة عن طريق تجهيز الأداة والضغط على مفتاح R على لوحة المفاتيح الخاصة بك. يجب أن يتغير رمز الحقيبة مؤقتًا إلى رمز الانتظار للإشارة إلى أن السلاح يتم إعادة تحميله:

إلغاء ربط الإجراء

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

  1. أنشئ دالة جديدة تسمى toolUnequipped واستدعِ UnbindAction، مع تمرير اسم الإجراء.

    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  2. اربط دالة toolUnequipped بحدث Unequipped حتى تعمل الدالة عندما يتم تشغيل الحدث.

    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Unequipped:Connect(toolUnequipped)
    tool.Activated:Connect(toolActivated)
  3. اختبر اللعبة للتأكد من أن كل شيء يعمل بشكل صحيح. يجب أن تكون قادرًا على إعادة التحميل عندما تكون الأداة مجهزة، ولكن ليس عندما تكون غير مجهزة.

الآن تم الانتهاء من رسومك المتحركة لإعادة التحميل - كالتحدي الإضافي، حاول العد التنازلي لعداد الذخيرة في كل مرة يتم فيها إطلاق البازوكا. يمكنك بعد ذلك إلغاء تنشيط دالة toolActivated عندما لا يكون لدى البندقية ذخيرة، ثم إعادة تنشيطها بمجرد الانتهاء من رسوم إعادة التحميل.

©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.