시작하기
중급 튜토리얼

근접 프롬프트

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

사용자가 3D 공간에서 객체에 접근했을 때 나타나는 인터랙티브 근접 프롬프트를 생성하고, 사용자 입력에 따라 동작을 촉발할 수 있습니다.

이 튜토리얼은 Dungeon Delve 프로젝트를 예제로 사용합니다. 함께 진행하려면 다음 단계로 진행하기 전에 Studio에서 프로젝트를 열어주세요.

경험의 메인 페이지에서 Studio에서 편집 옵션

프롬프트 생성하기

화면에 표시되는 프롬프트는 ProximityPrompt 객체에 Attachment, BasePart 또는 Model을 부모로 하여 생성됩니다.

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

  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를 입력합니다.

활성화 거리

프롬프트는 사용자의 character가 프롬프트 객체의 부모의 정의된 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를 가진 프롬프트에 대한 지속 시간).
PromptButtonHoldBegan사용자가 비제로 HoldDuration를 가진 프롬프트와 상호작용하기 시작할 때 발생합니다.
PromptButtonHoldEnded사용자가 비제로 HoldDuration를 가진 프롬프트와의 상호작용을 중단할 때 발생합니다.

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

스크립트 내부에서 위의 이벤트는 ServerScriptService 내에 위치한 ObjectActions ModuleScript 내의 함수를 호출합니다.


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'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.