Anda dapat membuat prompt proksimitas interaktif yang muncul ketika pengguna mendekati objek di ruang 3D, kemudian memicu tindakan berdasarkan input pengguna.
Tutorial ini menggunakan proyek Dungeon Delve sebagai contoh. Untuk mengikuti, buka di Studio sebelum melanjutkan.

Buat prompt
Prompt di layar dihasilkan oleh objek ProximityPrompt yang diparent ke Attachment, BasePart, atau Model.
Pilih model PrisonDoor di tampilan 3D atau dari Explorer (Workspace → PromptObjects → PrisonDoor).


Perluas pohonnya dan pilih objek Door.

Menempatkan prompt pada Attachment memberi Anda lebih banyak kontrol tentang di mana titik interaksi terjadi, dibandingkan menempatkannya langsung pada bagian/model. Sisipkan Attachment baru dan ganti namanya menjadi PromptAttachment.

Temukan properti Position dari lampiran baru dan atur ke -2.25, -0.5, -0.5. Ini akan memindahkannya di depan lubang kunci pintu.


Arahkan kursor ke PromptAttachment dan sisipkan objek ProximityPrompt baru.

Penampilan prompt
Prompt terdiri dari tiga elemen utama, masing-masing dapat dikontrol oleh properti berikut:

- ObjectText — Nama opsional untuk objek yang berinteraksi.
- ActionText — Nama tindakan opsional yang ditampilkan kepada pengguna.
- KeyboardKeyCode — Kunci keyboard yang akan memicu prompt.
- GamepadKeyCode — Tombol gamepad yang akan memicu prompt.
Untuk menyesuaikan penampilan prompt pintu penjara, lakukan perubahan berikut:
Di jendela Properties, temukan properti ObjectText dan ketik Door.

Untuk properti ActionText, ketik Pick Lock.

Jarak aktivasi
Prompt muncul ketika karakter pengguna bergerak dalam jangkauan MaxActivationDistance yang ditentukan dari induk objek prompt.

Nilai default bekerja dengan baik dalam kebanyakan kasus, tetapi Anda dapat mendorong interaksi pengguna lebih dekat ke kunci dengan mengubah MaxActivationDistance menjadi 4.

Durasi tahan
Nilai properti HoldDuration menentukan seberapa cepat tindakan prompt dipicu, dalam detik. Karena pintu ini harus dipilih untuk membukanya, ubah properti HoldDuration menjadi 4.

Implementasikan tindakan
Cara terbaik untuk mendeteksi peristiwa prompt adalah melalui ProximityPromptService — ini memungkinkan Anda mendeteksi peristiwa secara terpusat tanpa melampirkan skrip ke setiap objek prompt.
Kerangka dasar adalah sebagai berikut:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Deteksi ketika prompt dipicu
local function onPromptTriggered(promptObject, player)
end
-- Deteksi ketika tahan prompt dimulai
local function onPromptHoldBegan(promptObject, player)
end
-- Deteksi ketika tahan prompt berakhir
local function onPromptHoldEnded(promptObject, player)
end
-- Hubungkan peristiwa prompt ke fungsi penanganan
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)| Event | Deskripsi |
|---|---|
| PromptTriggered | Terpicu ketika pengguna berinteraksi dengan prompt (setelah durasi untuk prompt dengan HoldDuration yang tidak nol). |
| PromptButtonHoldBegan | Terpicu ketika pengguna mulai berinteraksi dengan prompt dengan HoldDuration yang tidak nol. |
| PromptButtonHoldEnded | Terpicu ketika pengguna berhenti berinteraksi dengan prompt dengan HoldDuration yang tidak nol. |
Dalam proyek Dungeon Delve, peristiwa ini dikelola oleh skrip PromptEvents di dalam ServerScriptService.

Di dalam skrip, peristiwa di atas hanya memanggil fungsi dalam ModuleScript ObjectActions, yang juga terletak di ServerScriptService.
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Deteksi ketika prompt dipicu
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Deteksi ketika tahan prompt dimulai
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Deteksi ketika tahan prompt berakhir
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Hubungkan peristiwa prompt ke fungsi penanganan
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)Prompt proksimitas adalah solusi yang nyaman dan dapat disesuaikan untuk interaksi objek dalam permainan. Lihat halaman referensi ProximityPrompt dan ProximityPromptService untuk lebih banyak cara mengontrol perilaku prompt, dan jelajahi objek interaktif lainnya di Dungeon Delve untuk inspirasi kreatif.