ProximityPrompt objets encouragent l'interaction des utilisateurs pour déclencher une action lorsqu'ils s'approchent d'objets dans le jeu tels que des portes, des interrupteurs et des boutons. En utilisant cet objet, vous pouvez :
- Indiquer quels objets un utilisateur peut interagir dans le jeu.
- Afficher l'action qu'un utilisateur peut effectuer sur l'objet, puis déclencher l'action par une entrée utilisateur telle que la pression ou le maintien d'une touche.
- Afficher l'entrée correcte pour tous les types d'entrée, tels que les touches de clavier, de manette et d'é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 la façon dont vous souhaitez qu'elle apparaisse, quand vous souhaitez qu'elle soit visible, et ce que vous souhaitez 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 ces éléments à 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 qu'un utilisateur déclenchera.
KeyboardKeyCode La touche du clavier qu'un utilisateur doit appuyer ou maintenir pour déclencher l'action.
GamepadKeyCode La touche de la manette qu'un 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 y a un chemin dégagé de la caméra à 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 celle sur laquelle la caméra pointe, ainsi que de la valeur de la propriété Exclusivity de chaque invite de proximité.

Interactivité
Vous pouvez personnaliser la façon 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 true, 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 false, un utilisateur ne peut interagir avec l'invite de proximité qu'en appuyant sur la touche spécifiée.
Script des 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é depuis un seul endroit, évitant ainsi tout besoin de code dupliqué dans votre jeu.
| Événement | Description |
|---|---|
| PromptTriggered | Se déclenche lorsqu'un joueur interagit avec une invite de proximité (après la durée d'une invite avec une HoldDuration non nulle). |
| PromptTriggerEnded | Se déclenche lorsque le joueur cesse d'interagir avec une invite de proximité. |
| PromptButtonHoldBegan | Se déclenche lorsqu'un joueur commence à interagir avec une invite de proximité avec une valeur de HoldDuration non nulle. |
| PromptButtonHoldEnded | Se déclenche lorsqu'un joueur cesse d'interagir avec une invite de proximité avec une valeur de HoldDuration non nulle. |
| PromptShown | Se déclenche dans LocalScripts lorsqu'une invite de proximité est rendue visible. |
| PromptHidden | Se déclenche dans LocalScripts lorsqu'une invite est cachée. |
L'exemple de code suivant inclut un cadre de base pour utiliser 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)