근접 프롬프트

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

사용자가 3D 공간에서 개체에 접근할 때 나타나는 상호 작용 가능한 근접 프롬프트를 만들고 사용자 입력에 대한 작업을 트리거할 수 있습니다.

이 자습서에서는 던전 탐험 프로젝트를 쇼케이스로 사용합니다. 따라가려면 진행하기 전에 Studio에서 열어야 합니다.

Edit in Studio option from the experience's main page

프롬프트 만들기

화면에 표시되는 프롬프트는 ProximityPrompt 개체가 Attachment , BasePart 또는 Model 에 부모로 지정된 개체에 의해 생성됩니다.

  1. 3D 뷰 또는 탐색기에서 감옥 문 모델을 선택하거나 ( 작업 공간프롬프트 개체감옥 문 ).

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

  3. Attachment에 프롬프트를 배치하면 부품/모델에 직접 배치하는 것보다 상호 작용 지점이 발생하는 위치에 대한 제어가 향상됩니다.새로운 첨부 파일 을 삽입하고 이름을 프롬프트 첨부 로 변경합니다.

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

  5. 프롬프트 첨부 에 마우스를 올리고 새로운 근접 프롬프트 개체를 삽입합니다.

프롬프트 모습

프롬프트는 다음 속성으로 제어할 수 있는 세 가지 기본 요소로 구성됩니다:

  • 개체 텍스트 — 상호 작용하는 개체의 선택적 이름.
  • 액션 텍스트 — 사용자에게 표시되는 선택적 액션 이름.
  • 키보드키코드 — 프롬프트를 트리거할 키보드 키.
  • GamepadKeyCode — 프롬프트를 트리거할 게임패드 버튼.

교도 문 프롬프트의 모양을 사용자 지정하려면 다음 변경 사항을 적용하십시오:

  1. 속성 창에서 개체 텍스트 속성을 찾아 을 입력하십시오.

  2. 액션 텍스트 속성에 대해 잠금 해제 를 입력하십시오.

활성화 거리

사용자의 캐릭터 가 알림 개체의 부모 범위인 최대 활성화 거리 내에서 이동하면 알림이 나타납니다.

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

지속 시간

보유 기간 속성 값은 프롬프트의 작업이 얼마나 빨리 트리거되는지, 초 단위로 결정합니다.이 문을 열려면 선택해야 하므로 보유 기간 속성을 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
-- 프롬프트 이벤트를 처리 함수에 연결 Connect prompt events to handling functions
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
이벤트설명
PromptTriggered사용자가 프롬프트와 상호작용할 때 발생(프롬프트의 기간은 0이 아닌 HoldDuration).
PromptButtonHoldBegan사용자가 0보다 큰 HoldDuration 프롬프트와 상호작용을 시작할 때 발생합니다.
PromptButtonHoldEnded사용자가 0보다 큰 값의 프롬프트와 상호작용을 중지할 때 발생합니다 HoldDuration

던전 탐험 프로젝트에서 이 이벤트는 PromptEvents 스크립트 내에서 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
-- 프롬프트 이벤트를 처리 함수에 연결 Connect prompt events to handling functions
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)

근접 프롬프트는 게임 내 개체 상호 작용에 대한 편리하고 사용자 지정 가능한 솔루션입니다.더 많은 방법으로 프롬프트 동작을 제어하는 데 도움이 되는 ProximityPromptProximityPromptService를 확인하고, 던전 탐험에서 창의적인 영감을 얻으세요.