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

Buat prompt
Prompt di layar dihasilkan oleh objek ProximityPrompt yang di-parent 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 attachment baru dan setel ke -2.25, -0.5, -0.5. Ini akan memindahkannya di depan lubang kunci pintu.


Arahkan mouse ke PromptAttachment dan sisipkan objek ProximityPrompt baru.

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

- ObjectText — Nama opsional untuk objek yang berinteraksi.
- ActionText — Nama aksi 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 berfungsi dengan baik dalam kebanyakan kasus, tetapi Anda dapat mempush interaksi pengguna lebih dekat ke kunci dengan mengubah MaxActivationDistance menjadi 4.

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

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

Di dalam skrip, acara 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 saat prompt dipicu
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Deteksi saat tahan prompt dimulai
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Deteksi saat tahan prompt berakhir
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Hubungkan acara 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 mengendalikan perilaku prompt, dan jelajahi objek interaktif lainnya dalam Dungeon Delve untuk inspirasi kreatif.