ProximityPrompt الكائنات تشجع التفاعل من المستخدم لبدء إجراء عند اقترابهم من كائنات داخل التجربة مثل الأبواب، مفاتيح الإضاءة، والأزرار. باستخدام هذا الكائن، يمكنك:
- الإشارة إلى الكائنات التي يمكن للمستخدم التفاعل معها في التجربة.
- عرض الإجراء الذي يمكن للمستخدم اتخاذه على الكائن، ثم تفعيل الإجراء من خلال مدخلات المستخدم مثل الضغط أو الاستمرار على مفتاح.
- عرض المدخل الصحيح لجميع أنواع المدخلات، مثل لوحة المفاتيح، جهاز التحكم، ومفاتيح الشاشة اللمسية.
إنشاء المحفزات القريبة
يجب عليك ربط المحفزات القريبة بالجزء أو النموذج أو المرفق الذي تريد من المستخدم التفاعل معه. لإضافة محفز قريب إلى كائن BasePart أو Model أو Attachment:
في نافذة Explorer، قم بالمرور فوق BasePart أو Model أو Attachment وانقر على زر ⊕ . ستظهر قائمة سياقية.
من القائمة، قم بإدراج ProximityPrompt.

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

الرؤية
يمكنك التحكم في متى يكون المحفز القريب مرئيًا من خلال خصائص MaxActivationDistance وRequiresLineOfSight وExclusivity.
MaxActivationDistance
تسمح لك خاصية MaxActivationDistance بتعريف النطاق من حول كائن ProximityPrompt الذي ينشط رؤية المحفز القريب. بمجرد دخول شخصية المستخدم إلى ذلك النطاق، يصبح المحفز القريب مرئيًا.

RequiresLineOfSight
تقوم خاصية RequiresLineOfSight بتنشيط رؤية المحفز القريب عندما تكون هناك مسار واضح من الكاميرا إلى كائن ProximityPrompt. بشكل افتراضي، يتم تعيين هذه الخاصية إلى true.
Exclusivity
إذا كانت شخصية المستخدم ضمن نطاق العديد من المحفزات القريبة، فإن رؤية كل محفز قريب تعتمد على المحفز القريب الذي تشير إليه الكاميرا، بالإضافة إلى قيمة خاصية Exclusivity لكل محفز قريب.

التفاعل
يمكنك تخصيص كيفية تفاعل المستخدم مع المحفز القريب عبر خصائص HoldDuration وClickablePrompt.
HoldDuration
تحدد خاصية HoldDuration عدد الثواني التي يجب على المستخدم الضغط فيها على مفتاح قبل أن يتم تفعيل إجراء المحفز القريب. إذا كانت قيمة هذه الخاصية 0، يتم تفعيل إجراء المحفز القريب على الفور.
ClickablePrompt
تحدد خاصية ClickablePrompt ما إذا كان يمكن للمستخدم النقر على المحفز القريب لتفعيل إجرائه. عندما يتم تعيينه إلى true، يمكن للمستخدم التفاعل مع المحفز القريب بالنقر مباشرة عليه أو من خلال الضغط على المفتاح المحدد. عندما يتم تعيينه إلى false، يمكن للمستخدم التفاعل فقط مع المحفز القريب من خلال الضغط على المفتاح المحدد.
المحفزات القريبة النصية
يمكنك الاتصال بأحداث المحفز القريب إما على كائن ProximityPrompt نفسه أو بشكل عام من خلال ProximityPromptService. تتيح لك ProximityPromptService إدارة سلوك جميع المحفزات القريبة من موقع واحد، مما يمنع أي حاجة إلى تكرار الكود في تجربتك.
| الحدث | الوصف |
|---|---|
| PromptTriggered | يحدث عندما يتفاعل لاعب مع محفز قريب (بعد مدة المحفز مع قيمة HoldDuration غير صفرية). |
| PromptTriggerEnded | يحدث عندما يتوقف اللاعب عن التفاعل مع محفز قريب. |
| PromptButtonHoldBegan | يحدث عندما يبدأ لاعب في التفاعل مع محفز قريب مع قيمة HoldDuration غير صفرية. |
| PromptButtonHoldEnded | يحدث عندما يتوقف لاعب عن التفاعل مع محفز قريب مع قيمة HoldDuration غير صفرية. |
| PromptShown | يحدث في LocalScripts عندما يصبح المحفز القريب مرئيًا. |
| PromptHidden | يحدث في LocalScripts عندما يتم إخفاء المحفز. |
تتضمن عينة الكود التالية إطارًا أساسيًا لاستخدام ProximityPromptService:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detect when prompt is triggered
local function onPromptTriggered(promptObject, player)
end
-- Detect when prompt hold begins
local function onPromptHoldBegan(promptObject, player)
end
-- Detect when prompt hold ends
local function onPromptHoldEnded(promptObject, player)
end
-- Connect prompt events to handling functions
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)