ProximityPrompt objects encourage l'interaction des utilisateurs pour déclencher une action lorsqu'ils s'approchent d'objets dans l'expérience tels que des portes, des interrupteurs et des boutons. À l'aide de cet objet, vous pouvez :
- Indiquer quels objets un utilisateur peut interagir avec dans l'expérience.
- Afficher l'action qu'un utilisateur peut effectuer sur l'objet, puis déclencher l'action par l'entrée utilisateur, comme appuyer ou maintenir une touche.
- Afficher l'entrée correcte pour tous les types d'entrée, tels que le clavier, la manette et les touches à écran tactile.
Créer des invites de proximité
Vous devez parenté les invites de proximité à la pièce, au modèle ou à l'attachement avec lequel vous souhaitez qu'un utilisateur interagisse. Pour ajouter une invite de proximité à un objet BasePart, Model ou Attachment :
Dans la fenêtre Explorer, survolez le BasePart, Model ou Attachment et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
Dans le menu, insérez une ProximityPrompt.

Personnaliser les invites de proximité
Vous pouvez personnaliser une invite de proximité en fonction de son apparence, de quand vous souhaitez qu'elle soit visible et de ce que vous voulez qu'un utilisateur fasse pour déclencher l'action.
Apparence
Les invites de proximité doivent communiquer trois choses :
- L'objet avec lequel un utilisateur peut interagir.
- L'action qui se déclenche lorsqu'il interagit avec l'invite de proximité.
- La touche que l'utilisateur doit appuyer ou maintenir.
Vous pouvez spécifier cela à travers les propriétés suivantes :
ObjectText Un nom optionnel pour l'objet avec lequel un utilisateur peut interagir.
ActionText Un nom optionnel pour l'action que l'utilisateur déclenchera.
KeyboardKeyCode La touche du clavier que l'utilisateur doit appuyer ou maintenir pour déclencher l'action.
GamepadKeyCode La touche de la manette que l'utilisateur doit appuyer ou maintenir pour déclencher l'action.

Visibilité
Vous pouvez contrôler quand l'invite de proximité est visible grâce à ses propriétés MaxActivationDistance, RequiresLineOfSight et Exclusivity.
MaxActivationDistance
La propriété MaxActivationDistance vous permet de définir la portée autour de l'objet ProximityPrompt qui active la visibilité de l'invite de proximité. Une fois que le personnage d'un utilisateur entre dans cette portée, l'invite de proximité devient visible.

RequiresLineOfSight
La propriété RequiresLineOfSight active la visibilité de l'invite de proximité lorsqu'il existe un chemin dégagé entre la caméra et l'objet ProximityPrompt. Par défaut, cette propriété est définie sur vrai.
Exclusivité
Si le personnage d'un utilisateur est à portée de plusieurs invites de proximité, la visibilité de chaque invite de proximité dépend de l'invite de proximité sur laquelle la caméra pointe, ainsi que de la valeur de propriété Exclusivity de chaque invite de proximité.

Interactivité
Vous pouvez personnaliser la manière dont un utilisateur interagit avec une invite de proximité grâce à ses propriétés HoldDuration et ClickablePrompt.
HoldDuration
La propriété HoldDuration détermine combien de secondes un utilisateur doit maintenir une touche avant que l'action de l'invite de proximité ne se déclenche. Si cette propriété a une valeur de 0, l'action de l'invite de proximité se déclenche immédiatement.
ClickablePrompt
La propriété ClickablePrompt spécifie si un utilisateur peut cliquer sur une invite de proximité pour déclencher son action. Lorsqu'elle est définie sur vrai, un utilisateur peut interagir avec l'invite de proximité en cliquant directement sur l'invite de proximité ou en appuyant sur la touche spécifiée. Lorsqu'elle est définie sur faux, un utilisateur ne peut interagir avec l'invite de proximité qu'en appuyant sur la touche spécifiée.
Script d'invites de proximité
Vous pouvez vous connecter aux événements d'invite de proximité soit sur l'objet ProximityPrompt lui-même, soit globalement via ProximityPromptService. Le ProximityPromptService vous permet de gérer tout le comportement des invites de proximité à partir d'un seul endroit, évitant toute nécessité de code dupliqué dans votre expérience.
| Événement | Description |
|---|---|
| PromptTriggered | Se déclenche lorsqu'un joueur interagit avec une invite de proximité (après la durée d'une invite ayant une HoldDuration non nulle). |
| PromptTriggerEnded | Se déclenche lorsque le joueur arrête d'interagir avec une invite de proximité. |
| PromptButtonHoldBegan | Se déclenche lorsque le joueur commence à interagir avec une invite de proximité ayant une valeur de HoldDuration non nulle. |
| PromptButtonHoldEnded | Se déclenche lorsque le joueur arrête d'interagir avec une invite de proximité ayant une valeur de HoldDuration non nulle. |
| PromptShown | Se déclenche dans LocalScripts lorsque l'invite de proximité devient visible. |
| PromptHidden | Se déclenche dans LocalScripts lorsque l'invite est masquée. |
Le code d'exemple suivant comprend un cadre de base pour l'utilisation de ProximityPromptService :
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Détecter quand l'invite est déclenchée
local function onPromptTriggered(promptObject, player)
end
-- Détecter quand le maintien de l'invite commence
local function onPromptHoldBegan(promptObject, player)
end
-- Détecter quand le maintien de l'invite se termine
local function onPromptHoldEnded(promptObject, player)
end
-- Connecter les événements d'invite aux fonctions de gestion
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)