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")
-- اكتشاف متى يتم تفعيل المطالبة
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)