근접 프롬프트

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

사용자가 3D 공간의 객체에 접근할 때 나타나는 인터랙티브 근접 프롬프트를 생성할 수 있으며, 사용자 입력에 따라 동작을 트리거합니다.

이 튜토리얼은 Dungeon Delve 프로젝트를 쇼케이스로 사용합니다. 따라 하려면 진행하기 전에 Studio에서 열어주세요.

게임의 메인 페이지에서 Studio에서 편집 옵션

프롬프트 생성

화면에 표시되는 프롬프트는 ProximityPrompt 객체가 Attachment, BasePart 또는 Model에 부모로 설정되어 생성됩니다.

  1. 3D 뷰 또는 Explorer에서 PrisonDoor 모델을 선택합니다 (WorkspacePromptObjectsPrisonDoor).

  2. 트리를 확장하고 Door 객체를 선택합니다.

  3. Attachment에 프롬프트를 배치하면 상호작용 지점을 더 잘 제어할 수 있습니다. 새 Attachment를 삽입하고 이름을 PromptAttachment로 변경합니다.

  4. 새 첨부 파일의 Position 속성을 찾아 -2.25, -0.5, -0.5로 설정합니다. 이렇게 하면 문 앞의 열쇠 구멍 앞에 위치하게 됩니다.

  5. PromptAttachment 위에 마우스를 올리고 새 ProximityPrompt 객체를 삽입합니다.

프롬프트 외관

프롬프트는 세 가지 주요 요소로 구성되며, 각 요소는 다음 속성으로 제어할 수 있습니다:

  • ObjectText — 상호작용하는 객체의 선택적 이름입니다.
  • ActionText — 사용자에게 표시되는 선택적 동작 이름입니다.
  • KeyboardKeyCode — 프롬프트를 트리거하는 키보드 키입니다.
  • GamepadKeyCode — 프롬프트를 트리거하는 게임패드 버튼입니다.

감옥 문 프롬프트의 외관을 사용자 정의하려면 다음과 같은 변경을 합니다:

  1. Properties 창에서 ObjectText 속성을 찾아 Door를 입력합니다.

  2. ActionText 속성에 Pick Lock를 입력합니다.

활성화 거리

프롬프트는 사용자의 캐릭터가 프롬프트 객체의 부모의 정의된 MaxActivationDistance 범위 내로 이동할 때 나타납니다.

기본 값은 대부분의 경우 잘 작동하지만, MaxActivationDistance4로 변경하여 사용자 상호작용을 잠금 장치에 더 가깝게 할 수 있습니다.

유지 시간

HoldDuration 속성 값은 프롬프트의 동작이 트리거되는 속도를 초 단위로 결정합니다. 이 문은 잠금을 해제하기 위해 잠금을 풀어야 하므로 HoldDuration 속성을 4로 변경합니다.

동작 구현

프롬프트 이벤트를 감지하는 가장 좋은 방법은 ProximityPromptService를 사용하는 것입니다 — 이를 통해 각 프롬프트 객체에 스크립트를 연결하지 않고도 이벤트를 중앙에서 감지할 수 있습니다.

기본 프레임워크는 다음과 같습니다:

local ProximityPromptService = game:GetService("ProximityPromptService")
-- 프롬프트가 트리거될 때 감지
local function onPromptTriggered(promptObject, player)
end
-- 프롬프트 유지가 시작될 때 감지
local function onPromptHoldBegan(promptObject, player)
end
-- 프롬프트 유지가 끝날 때 감지
local function onPromptHoldEnded(promptObject, player)
end
-- 프롬프트 이벤트를 처리 함수에 연결
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
이벤트설명
PromptTriggered사용자가 프롬프트와 상호작용할 때 발생합니다 (이후 HoldDuration가 0이 아닌 프롬프트의 지속 시간).
PromptButtonHoldBegan사용자가 0이 아닌 HoldDuration의 프롬프트와 상호작용을 시작할 때 발생합니다.
PromptButtonHoldEnded사용자가 0이 아닌 HoldDuration의 프롬프트와 상호작용을 중단할 때 발생합니다.

Dungeon Delve 프로젝트에서는 이러한 이벤트가 ServerScriptService 내의 PromptEvents 스크립트에 의해 관리됩니다.

스크립트 내부에서 위의 이벤트는 단순히 ObjectActions ModuleScript 내의 함수를 호출합니다. 이 모듈도 ServerScriptService에 위치합니다.

local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- 프롬프트가 트리거될 때 감지
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- 프롬프트 유지가 시작될 때 감지
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- 프롬프트 유지가 끝날 때 감지
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- 프롬프트 이벤트를 처리 함수에 연결
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)

근접 프롬프트는 게임 내 객체 상호작용을 위한 편리하고 사용자 정의 가능한 솔루션입니다. 프롬프트 동작을 제어하는 더 많은 방법을 위해 ProximityPromptProximityPromptService 참조 페이지를 확인하고, Dungeon Delve에서 다른 인터랙티브 객체를 탐색하여 창의적인 영감을 얻으세요.

©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.