Vous pouvez créer des invites de proximité interactives qui apparaissent lorsque les utilisateurs s'approchent d'objets dans l'espace 3D, puis déclenchent des actions en fonction de l'entrée de l'utilisateur.
Ce tutoriel utilise le projet Dungeon Delve comme vitrine. Pour suivre, ouvrez-le dans Studio avant de continuer.

Créer une invite
Les invites à l'écran sont générées par un objet ProximityPrompt parenté à un Attachment, BasePart ou Model.
Sélectionnez le modèle PrisonDoor dans la vue 3D ou depuis l'Explorateur (Workspace → PromptObjects → PrisonDoor).


Développez son arbre et sélectionnez l'objet Door.

Placer une invite sur un Attachment vous donne plus de contrôle sur l'endroit où se produit le point d'interaction, par rapport à le placer directement sur la pièce/le modèle. Insérez un nouvel Attachment et renommez-le en PromptAttachment.

Localisez la propriété Position de la nouvelle attache et définissez-la sur -2.25, -0.5, -0.5. Cela la déplacera devant le trou de serrure de la porte.


Survolez PromptAttachment et insérez un nouvel objet ProximityPrompt.

Apparence de l'invite
Les invites se composent de trois éléments principaux, chacun pouvant être contrôlé par les propriétés suivantes :

- ObjectText — Un nom optionnel pour l'objet avec lequel on interagit.
- ActionText — Un nom d'action optionnel affiché à l'utilisateur.
- KeyboardKeyCode — La touche du clavier qui déclenchera l'invite.
- GamepadKeyCode — Le bouton de la manette qui déclenchera l'invite.
Pour personnaliser l'apparence de l'invite de la porte de prison, effectuez les modifications suivantes :
Dans la fenêtre Propriétés, localisez la propriété ObjectText et tapez Door.

Pour la propriété ActionText, tapez Pick Lock.

Distance d'activation
Les invites apparaissent lorsque le personnage de l'utilisateur se déplace dans la plage définie de MaxActivationDistance de l'objet parent de l'invite.

La valeur par défaut fonctionne bien dans la plupart des cas, mais vous pouvez rapprocher l'interaction de l'utilisateur de la serrure en changeant MaxActivationDistance à 4.

Durée de maintien
La valeur de la propriété HoldDuration détermine la rapidité avec laquelle l'action de l'invite est déclenchée, en secondes. Puisque cette porte doit être crochetée pour être déverrouillée, changez la propriété HoldDuration à 4.

Implémenter une action
La meilleure façon de détecter les événements d'invite est via ProximityPromptService — cela vous permet de détecter les événements de manière centralisée sans attacher un script à chaque objet d'invite.
Un cadre de base est le suivant :
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)| Événement | Description |
|---|---|
| PromptTriggered | Se déclenche lorsqu'un utilisateur interagit avec une invite (après la durée pour une invite avec HoldDuration non nulle). |
| PromptButtonHoldBegan | Se déclenche lorsqu'un utilisateur commence à interagir avec une invite de HoldDuration non nulle. |
| PromptButtonHoldEnded | Se déclenche lorsqu'un utilisateur arrête d'interagir avec une invite de HoldDuration non nulle. |
Dans le projet Dungeon Delve, ces événements sont gérés par le script PromptEvents dans ServerScriptService.

À l'intérieur du script, les événements ci-dessus appellent simplement des fonctions dans le ModuleScript ObjectActions, également situé dans ServerScriptService.
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Détecter quand l'invite est déclenchée
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Détecter quand le maintien de l'invite commence
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Détecter quand le maintien de l'invite se termine
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(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)Les invites de proximité sont une solution pratique et personnalisable pour l'interaction avec les objets dans le jeu. Consultez les pages de référence ProximityPrompt et ProximityPromptService pour encore plus de façons de contrôler le comportement des invites, et explorez d'autres objets interactifs dans Dungeon Delve pour une inspiration créative.