Menambahkan Prompt Kedekatan

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Anda dapat menciptakan prompt kedekatan interaktif yang muncul ketika pengguna mendekati objek di ruang 3D, lalu mengaktifkan tindakan pada masukan pengguna.

Tutorial ini menggunakan proyek Dungeon Delve sebagai penunjukan. Untuk melanjutkan, buka di Studio sebelum melanjutkan.

Edit in Studio option from the experience's main page

Buat Prompt

Istem prompsi pada layar dihasilkan oleh objek ProximityPrompt yang bermutasi ke Class.Attachment , Attachment , atau BasePart .

  1. Pilih model PrisonDoor di tampilan 3D atau dari Explorer ( WorkspacePromptObjects → 1> PrisonDoor1> ).

  2. Expand its tree and select the Pintu object.

  3. Menempatkan prompt di Attachment memberi Anda lebih banyak kendali di mana titik interaksi terjadi, daripada menempatkannya secara langsung di bagian/model. Sisipkan Attachment Baru dan ganti nama menjadi PromptAttach .

  4. Temukan Posisi property baru dan tetapkan ke -2.25 , -0.5 , - 1> 0.51> . Ini akan menempatkannya di depan lubang kunci pintu.

  5. Hover over PromptRotation and insert a new ProximityPrompt object.

Tampilan Mendesak

Prompt terdiri dari tiga elemen utama, masing-masing dapat dikontrol oleh kepemilikan berikut:

  • ObjekTeks — Nama opsi untuk objek yang diinteraksi dengan.
  • ActionText — Nama aksi opcional yang ditunjukkan kepada pengguna.
  • KeyboardKeyCode — Tombol keyboard yang akan memicu prompt.
  • Kode Gamepad — Tombol gamepad yang akan memicu prompt.

Untuk menyesuaikan tampilan pintu masuk penjara, buat perubahan berikut:

  1. Di jendela Proprietas, temukan property ObjektText dan ketik Pintu .

  2. Untuk ActionText property, type in Pick Lock .

Jarak Aktivasi

Petunjuk muncul ketika karakter pengguna bergerak dalam rentang MaxActivationDistance yang telah ditentukan dari objek pengunggul pengguna.

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

Pegang Durasi

Nilai HoldDuration property menentukan seberapa cepat tindakan prompt diaktifkan, dalam detik. Karena pintu ini harus dipilih untuk membuka kunci, ubah nilai HoldDuration ke 4 .

Menerapkan Tindakan

Cara terbaik untuk mendeteksi acara muncul adalah melalui ProximityPromptService — ini memungkinkan Anda untuk mendeteksi acara secara pusat tanpa menghubungkan skrip ke setiap objek muncul.

Sebuah framework dasar adalah sebagai berikut:


local ProximityPromptService = game:GetService("ProximityPromptService")
-- Deteksi saat prompt diaktifkan
local function onPromptTriggered(promptObject, player)
end
-- Deteksi saat prompt hold dimulai
local function onPromptHoldBegan(promptObject, player)
end
-- Deteksi saat prompt hold berakhir
local function onPromptHoldEnded(promptObject, player)
end
-- Koneksi acara prompt ke fungsi penanganan
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
AcaraDeskripsi
PromptTriggeredBerapi-api saat seorang pengguna berinteraksi dengan prompt (setelah durasi untuk prompt dengan non-零 HoldDuration).
PromptButtonHoldBeganMengaktifkan ketika seorang pengguna mulai berinteraksi dengan prompt non-零 HoldDuration .
PromptButtonHoldEndedBerapi-api saat pengguna berhenti berinteraksi dengan prompt non-零 HoldDuration

Dalam proyek Dungeon Delve, acara ini dianggap oleh script PromptEvents di dalam ServerScriptService .

Dalam script, acara di atas hanya memanggil fungsi dalam ObjectActionsModuleScript, juga berlokasi di ServerScriptService.


local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Deteksi saat prompt diaktifkan
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Deteksi saat prompt hold dimulai
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Deteksi saat prompt hold berakhir
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Koneksi acara prompt ke fungsi penanganan
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)

Proximity prompts adalah solusi yang mudah dan dapat disesuaikan untuk interaksi objek dalam game. Periksa halaman referensi ProximityPrompt dan ProximityPromptService untuk mengetahui lebih lanjut tentang perilaku prompt, dan jelajahi objek interaktif lainnya di Dungeon Delve untuk mendapatkan inspirasi kreatif.