Invites de proximité

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Vous pouvez créer des invites de proximité interactives qui apparaissent lorsque les utilisateurs approchent des objets dans l'espace 3D, puis déclencher des actions sur l'entrée de l'utilisateur.

Ce tutoriel utilise le projet Dungeon Delve comme vitrine. Pour suivre, ouvrez-le dans Studio avant de procéder.

Edit in Studio option from the experience's main page

Créer une demande

Les invitations à l'écran sont générées par un objet ProximityPrompt parenté à un Attachment, BasePart ou Model.

  1. Sélectionnez le modèle porte de prison dans la vue 3D ou à partir de l'Explorateur ( espace de travailobjets d'inviteporte de prison ).

  2. Étendez son arbre et sélectionnez l'objet porte .

  3. Placer une invite sur un Attachment vous donne plus de contrôle sur l'endroit où se produit le point d'interaction, versus le placement direct sur la partie/modèle.Insérez une nouvelle pièce jointe et renommez-la en pièce jointe rapide .

  4. Localisez la propriété de position de la nouvelle point d'attachejointe Position et définissez-la sur -2.25 , -0.5 , - 0.5 .Cela le déplacera devant la rainure de la clé de la porte.

  5. Passez la souris sur PromptAttachment et insérez un nouvel objet ProximityPrompt .

Apparence de la apparence

Les invitations se composent de trois éléments principaux, chacun desquels peut être contrôlé par les propriétés suivantes :

  • ObjectText — Un nom facultatif pour l'objet avec lequel on interagit.
  • ActionText — Un nom d'action facultatif affiché à l'utilisateur.
  • Code clé du clavier — La touche du clavier qui déclenchera la demande.
  • Code clé du bouton de jeu — Le bouton de jeu qui déclenchera la demande.

Pour personnaliser l'apparence de l'invite de la porte de la prison, apportez les modifications suivantes :

  1. Dans la fenêtre propriétés, localisez la propriété ObjectText et saisissez porte .

  2. Pour la propriété ActionText , saisissez Pick Lock .

Distance d'activation

Des invitations apparaissent lorsque le caractère de l'utilisateur se déplace dans la portée maximale d'activation définie de l'objet d'invitation.

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

Maintenir la durée

La valeur de propriété HoldDuration détermine la vitesse à laquelle l'action de la demande est déclenchée, en secondes.Puisque cette porte doit être choisie pour être déverrouillée, modifiez la propriété durée de maintien en 4 .

Mettre en œuvre une action

La meilleure façon de détecter les événements rapides est via ProximityPromptService — cela vous permet de détecter les événements centralement sans attacher un script à chaque objet de prompt.

Un cadre de base est comme suit :


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 la prompte commence
local function onPromptHoldBegan(promptObject, player)
end
-- Détecter quand la poignée de rappel se termine
local function onPromptHoldEnded(promptObject, player)
end
-- Relier les événements d'invite à des fonctions de traitement
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
ÉvénementAvertissement
PromptTriggeredSe déclenche lorsqu'un utilisateur interagit avec une invite ( après la durée d'une invite avec un nombre nul HoldDuration ).
PromptButtonHoldBeganS'enflamme lorsqu'un utilisateur commence à interagir avec une invite de non zéro HoldDuration .
PromptButtonHoldEndedS'enflamme lorsqu'un utilisateur cesse d'interagir avec une invite de non zéro HoldDuration

Dans le projet Déluge du donjon, 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 ObjectActions , également situés dans le 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 la prompte commence
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Détecter quand la poignée de rappel se termine
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Relier les événements d'invite à des fonctions de traitement
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)

Les invitations de proximité sont une solution pratique et personnalisable pour l'interaction d'objets en 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.