Vous pouvez créer des提示 de proximité interactifs qui apparaissent lorsque les utilisateurs s'approchent d'objets dans l'espace 3D, puis déclenchent des actions sur l'entrée de l'utilisateur.
Ce tutoriel utilise le projet Dungeon Delve comme une vitrine. Pour suivre, ouvrez-le dans Studio avant de continuer.
Créer une invite
Les invitations à l'écran sont générées par un objet ProximityPrompt associé à un Attachment, BasePart ou 2> Class.Model2>.
Sélectionnez le modèle PrisonDoor dans la vue 3D ou dans l'Explorateur ( Workspace → PromptObjects → 1> PrisonDoor1> ).
Expand its tree and select the porte objet.
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 partie/modèle. Insérez une nouvelle invocation de lien et renommez-la en lien d'appel .
Localisez la propriété de position de la nouvelle point d'attache Position et définissez-la sur -2.25 , -0.5 , - 1> 0.51>. Cela le déplacera devant l'œil de la clé de la porte.
Survolez PromptRotation et insérez un nouveau ProximityPrompt objet.
Apparence de la saisie
Les prompts consistent en trois éléments principaux, chacun desquels peut être contrôlé par les propriétés suivantes :
- Text de l'objet — Un nom facultatif pour l'objet avec lequel vous interagissez.
- ActionText — Un nom d'action facultatif affiché à l'utilisateur.
- Code clavier du clavier — Clé du clavier qui déclenchera la demande.
- GamepadKeyCode — Bouton de gamepad qui déclenchera la demande.
Pour personnaliser l'apparence de la porte de la prison, faites les modifications suivantes :
Dans la fenêtre propriétés, localisez la propriété objet de texte et tapez dans porte .
Pour la propriété ActionText , tapez Verrouillage de sélection .
Distance d'activation
Les messages apparaissent lorsque le personnage de l'utilisateur se déplace dans la portée définie MaxActivationDistance de l'objet d'invite.
La valeur par défaut fonctionne bien dans la plupart des cas, mais vous pouvez pousser l'interaction de l'utilisateur plus près de la verrou en changeant MaxActivationDistance à 4 .
Durée d'持续
La valeur de la propriété Duration de vie d'une action détermine la vitesse à laquelle l'action de la fenêtre est déclenchée, en secondes. Étant donné que cette porte doit être choisie pour l'ouvrir, modifiez la valeur de la propriété Duration de vie pour 4 .
Mettre en œuvre 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 au centre sans attacher un script à chaque objet d'invite.
Un cadre de base est comme suivant :
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Détectez quand le prompt est déclenché
local function onPromptTriggered(promptObject, player)
end
-- Détectez quand la touche de maintien commence
local function onPromptHoldBegan(promptObject, player)
end
-- Détectez quand la pression enfoncée de la barre de commande se termine
local function onPromptHoldEnded(promptObject, player)
end
-- Connectez les événements de commande aux fonctions de traitement
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 non zéro HoldDuration ). |
PromptButtonHoldBegan | Se déclenche lorsqu'un utilisateur commence à interagir avec une invite de non-zéro HoldDuration . |
PromptButtonHoldEnded | Se déclenche lorsqu'un utilisateur arrête d'interagir avec une invite de non-zéro HoldDuration |
Dans le projet Dungeon Delve, ces événements sont gérés par le script PromptEvents dans ServerScriptService .
Dans le script, les événements ci-dessus appellent simplement des fonctions dans le ObjectActions ModuleScript , également situé dans ServerScriptService .
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Détectez quand le prompt est déclenché
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Détectez quand la touche de maintien commence
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Détectez quand la pression enfoncée de la barre de commande se termine
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Connectez les événements de commande aux fonctions de traitement
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Les提示 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 plus de façons de contrôler le comportement des提示 et d'explorer d'autres objets interactifs dans Donjon Delve pour de l'inspiration créative.