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

إنشاء تحفيز
تُولد التحفيزات على الشاشة بواسطة كائن ProximityPrompt الذي يكون فرعًا لـ Attachment أو BasePart أو Model.
حدد نموذج PrisonDoor في عرض ثلاثي الأبعاد أو من مستكشف ( Workspace → PromptObjects → PrisonDoor ).


قم بتوسيع شجرته واختر كائن Door.

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

حدد خاصية Position للمُرفق الجديد واضبطها على -2.25، -0.5، -0.5. سيؤدي ذلك إلى تحريكه أمام ثقب المفتاح في الباب.


قم بالتحويم فوق PromptAttachment وأدخل كائن ProximityPrompt جديد.

ظهور التحفيز
تتكون التحفيزات من ثلاثة عناصر رئيسية، يمكن التحكم في كل منها بواسطة الخصائص التالية:

- ObjectText — اسم اختياري للجسم الذي يتم التفاعل معه.
- ActionText — اسم عمل اختياري يظهر للمستخدم.
- KeyboardKeyCode — مفتاح لوحة المفاتيح الذي سيحفز التحفيز.
- GamepadKeyCode — زر وحدة التحكم الذي سيحفز التحفيز.
لتخصيص شكل التحفيز الخاص بباب السجن، قم بإجراء التغييرات التالية:
في نافذة الخصائص، حدد خاصية ObjectText واكتب Door.

بالنسبة لخاصية ActionText، اكتب Pick Lock.

مسافة التفعيل
تظهر التحفيزات عندما يتحرك شخصية المستخدم داخل نطاق MaxActivationDistance المحدد لوالد كائن التحفيز.

تعمل القيمة الافتراضية بشكل جيد في معظم الحالات، ولكن يمكنك دفع تفاعل المستخدم أقرب إلى القفل من خلال تغيير MaxActivationDistance إلى 4.

مدة الإمساك
تحدد قيمة خاصية HoldDuration مدى سرعة تشغيل إجراء التحفيز، بالثواني. نظرًا لأنه يجب فتح الباب لقفله، قم بتغيير خاصية HoldDuration إلى 4.

تنفيذ إجراء
أفضل طريقة لاكتشاف أحداث التحفيز هي من خلال ProximityPromptService — هذا يتيح لك اكتشاف الأحداث مركزيًا دون الحاجة إلى إرفاق سكربت لكل كائن تحفيز.
الإطار الأساسي كما يلي:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- اكتشاف متى يتم تنشيط التحفيز
local function onPromptTriggered(promptObject, player)
end
-- اكتشاف متى يبدأ الإمساك بالتحفيز
local function onPromptHoldBegan(promptObject, player)
end
-- اكتشاف متى ينتهي الإمساك بالتحفيز
local function onPromptHoldEnded(promptObject, player)
end
-- ربط أحداث التحفيز بدوال المعالجة
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
| الحدث | الوصف |
|---|---|
| PromptTriggered | يتم إطلاقه عندما يتفاعل المستخدم مع التحفيز (بعد المدة لتحفيز مع HoldDuration غير الصفري). |
| PromptButtonHoldBegan | يتم إطلاقه عندما يبدأ المستخدم بالتفاعل مع التحفيز مع HoldDuration غير الصفري. |
| PromptButtonHoldEnded | يتم إطلاقه عندما يتوقف المستخدم عن التفاعل مع التحفيز مع HoldDuration غير الصفري. |
في مشروع Dungeon Delve، تُدار هذه الأحداث بواسطة سكربت PromptEvents داخل ServerScriptService.

داخل السكربت، تستدعي الأحداث أعلاه ببساطة دوالًا داخل ModuleScript الخاصة بـ ObjectActions، التي تقع أيضًا في ServerScriptService.
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- اكتشاف متى يتم تنشيط التحفيز
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- اكتشاف متى يبدأ الإمساك بالتحفيز
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- اكتشاف متى ينتهي الإمساك بالتحفيز
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- ربط أحداث التحفيز بدوال المعالجة
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
تعتبر تحفيزات القرب حلاً مريحًا وقابلًا للتخصيص لتفاعل الأجسام داخل اللعبة. تحقق من صفحات مرجع ProximityPrompt و ProximityPromptService للحصول على المزيد من الطرق للتحكم في سلوك التحفيز، واستكشف أجسامًا تفاعلية أخرى في Dungeon Delve للحصول على إلهام إبداعي.