사용자가 3D 공간에서 개체에 다가갈 때 나타나는 상호 작용 프롬프트를 만들고 사용자 입력에 대한 작업을 트리거할 수 있습니다.
이 튜토리얼은 Dungeon Delve 프로젝트를 쇼케이스로 사용합니다. 따라서 진행하기 전에 Studio에서 열어보세요.
프롬프트 생성
온-스크린 프롬프트는 ProximityPrompt 개체에 부모인 Attachment , BasePart 또는 2> Class.Model2> 에 의해 생성됩니다.
선택 PrisonDoor 모델을 3D 뷰 또는 Explorer( Workspace → PromptObjects → 1>PrisonDoor1> )에서 선택합니다.
트리를 확장하고 문 개체를 선택합니다.
Class.Attachment 에 프롬프트를 배치하면 클래스/모델에 직접 배치하는 대신 해당 상호 작용의 위치에 대한 더 큰 제어를 제공합니다. 새로운 부착물을 삽입하고 모델에 다시 이름을 부착물 작성 을 으로 변경하십시오.
새 부착물의 위치 속성을 찾아 키 구멍의 앞에 설정하고 부착물-2.25 , 부착물-0.5 , 1>부착물-0.51> 순으로 이동합니다. 이렇게 하면 문의 열쇠 구멍 앞에 부착물이 이동됩니다.
프롬프트 어첩션 위로 마우스를 이동하고 새로운 프로텍티 프롬프트 개체를 삽입합니다.
익숙한 모양
프롬프트는 다음과 같은 속성을 통해 제어할 수 있는 3개의 기본 요소로 구성됩니다.
- ObjectText — 상호 작용하는 개체의 옵션 이름.
- ActionText — 사용자에게 표시되는 옵션 액션 이름.
- KeyboardKeyCode — 프롬프트를 트리거하는 키보드 키입니다.
- GamepadKeyCode — 프롬프트를 트리거하는 게임패드 버튼입니다.
수감자 문 혹은 익명화된 문에 나타나는 모양을 사용자 정의하려면 다음과 같은 변경을 수행하세요.To customize the appearance of the prison door prompt, make the following changes:
속성 창에서 개체 텍스트 속성을 찾아 문 을 입력합니다.
For the ActionText property, type in 잠금 선택 .
활성화 거리
프롬프트는 사용자의 캐릭터 가 프롬프트 개체의 부모의 정의된 MaxActivationDistance 범위 내에서 이동할 때 나타납니다.
기본값은 대부분의 경우 작동하지만, MaxActivationDistance 를 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
-- 처리 함수에 이벤트 연결
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
이벤트 | 설명 |
---|---|
PromptTriggered | 사용자가 프롬프트와 상호 작용할 때 ( 후 프롬프트의 지속 시간) HoldDuration ) 발생합니다. |
PromptButtonHoldBegan | 사용자가 non-zero HoldDuration 프롬프트와 상호 작용을 시작할 때 화이트리스트에 있는 경우 화이트리스트를 불러옵니다. |
PromptButtonHoldEnded | Class.ProximityPrompt.HoldDuration|HoldDuration가 아닌 제로 프롬프트와 상호 작용을 중지할 때 화재를 발생시킵니다. |
In the Dungeon Delve project, these events are managed by the PromptEvents script within ServerScriptService .
스크립트 내에서 위의 이벤트는 단순히 개체 작업 내에 있는 함수를 호출하며, 또한 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)
근접 프롬프트는 게임 내 개체 상호 작용에 편리하고 사용자 지정 가능한 솔루션입니다. ProximityPrompt 및 ProximityPromptService 참조 페이지를 확인하십시오, 프롬프트 동작을 제어하는 데 더 많은 방법을 확인하고, 크리에이티브