Input mouse dan keyboard

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

Sebagian besar sesi Roblox dimainkan di perangkat dengan mouse dan keyboard, jadi penting untuk mendukung input ini dengan benar saat merancang pengalaman untuk audiens yang luas.Setelah Anda nyaman dengan input mouse dan keyboard, buat pengalaman Anda kompatibel di berbagai platform dengan mengatur input seluler dan gamepad.

Untuk kenyamanan, Roblox menetapkan input mouse dan keyboard paling umum sebagai bind default yang, kecuali untuk bind yang disediakan, Anda dapat menulis ulang.

Masukan mouse umum

Seperti semua input perangkat, Anda dapat menangkap input mouse menggunakan UserInputService .Layanan ini menyediakan cara yang dapat diskalakan untuk menangkap perubahan input dan status input perangkat untuk banyak perangkat sekaligus.Roblox juga mendukung deteksi input mouse lama dengan PlayerMouse dan ClickDetectors .

Selain itu, Anda dapat menggunakan ContextActionService untuk menangani beberapa tindakan pada satu input tergantung pada konteks, seperti menggunakan alat saat dekat dengan batu, atau membuka pintu saat berada di dalam membangun kota.Lihat Input Tergantung Konteks untuk informasi tentang menetapkan tindakan input spesifik konteks.

Berikut adalah LocalScript , saat ditempatkan di StarterPlayerScripts , menangkap klik mouse dan mencetak posisi mouse ke jendela Output:

Skrip Lokal - Output Klik Mouse dan Posisi

local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Pertama-tama periksa apakah "processedEvent" benar
-- Ini menunjukkan bahwa skrip lain sudah memproses input, jadi yang ini diabaikan
if processedEvent then return end
-- Selanjutnya, periksa bahwa input adalah peristiwa mouse
if inputObject.UserInputType == Enum.UserInputType.MouseButton1 then
print("Left Mouse button was pressed:", inputObject.Position)
elseif inputObject.UserInputType == Enum.UserInputType.MouseButton2 then
print("Right Mouse button was pressed:", inputObject.Position)
end
end
UserInputService.InputEnded:Connect(onInputEnded)

Input keyboard umum

Untuk mengakses acara keyboard, gunakan acara UserInputService.InputEnded untuk melacak kapan saja keystroke atau input lainnya berakhir.Mirip dengan acara mouse , acara ini hanya berfungsi dalam LocalScript .

Berikut adalah LocalScript , saat ditempatkan di StarterPlayerScripts , mencetak Enum.KeyCode dari tombol yang ditekan ke jendela Output:


local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Pertama-tama periksa apakah "processedEvent" benar
-- Ini menunjukkan bahwa skrip lain telah memproses input, jadi yang ini diabaikan.
if processedEvent then return end
-- Selanjutnya, periksa bahwa input adalah acara keyboard
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)

Input UI

Input mouse dan keyboard secara otomatis bekerja dengan elemen UI interaktif seperti TextButtons dan ImageButtons , serta TextBoxes yang menangkap input teks seperti bidang dalam formulir.

Untuk informasi lebih lanjut tentang membuat tombol dan objek input teks, lihat Tombol dan Input Teks.

Mode gerakan karakter

Anda dapat mengatur skema kontrol gerakan mouse dan keyboard untuk pengalaman Roblox dengan mengubah nilai StarterPlayer.DevComputerMovementMode menjadi salah satu dari mengikuti:

PilihanDeskripsi
Pilihan Pengguna Memungkinkan pengguna untuk memilih skema kontrol yang diinginkan dari menu dalam pengalaman. Opsi ini diaktifkan secara default.
KeyboardMouse Pengguna dapat menekan WASD untuk bergerak dan Space untuk loncat.Ini adalah pengaturan default untuk pengguna keyboard dan mouse untuk pengaturan Pilihan Pengguna .
Klik untuk Bergerak Pengguna hanya dapat bergerak melalui pengalaman dengan mengklik kanan lokasi target.
Dapat diskripkan Nonaktifkan semua kontrol default dan memungkinkan Anda untuk mengikat kontrol Anda sendiri.

Ikon mouse

Anda dapat menyesuaikan penampilan dan perilaku ikon mouse pengguna dalam pengalaman Anda untuk menciptakan gaya kohesif di semua elemen UI Anda.Ini termasuk mengubah sementara ikon mouse pengguna dalam situasi tertentu, seperti menggulir di atas tombol.

Mengubah ikon

Anda dapat mengubah ikon mouse pengguna di dalam dengan mengatur properti ke ID aset Roblox khusus.Sebagai contoh, berikut LocalScript perubahan ikon mouse default pengguna menjadi lingkaran dengan titik biru di tengah:


local UserInputService = game:GetService("UserInputService")
UserInputService.MouseIcon = "rbxassetid://3400146391"

Sembunyikan ikon

Anda dapat menyembunyikan ikon mouse pengguna dengan mengatur UserInputService.MouseIconEnabled ke false dalam LocalScript .Sebagai contoh, kode berikut mengubah ikon mouse dari terlihat ke tidak terlihat dan kembali setiap dua detik:


local UserInputService = game:GetService("UserInputService")
while true do
task.wait(2)
UserInputService.MouseIconEnabled = false
task.wait(2)
UserInputService.MouseIconEnabled = true
end

Mengunci ikon

Anda dapat mengunci posisi ikon mouse ke layar menggunakan dengan nilai atau , lalu membukanya kembali dengan nilai .

Jika ikon mouse pengguna terkunci di posisi, UserInputService.InputChanged masih menembak saat pengguna memindahkan mouse, melewati jarak yang telah dipindahkan mouse.Sebagai contoh, sampel kode berikut memblokir ikon mouse pengguna setelah satu detik, lalu Studio mencetak delta mouse setiap kali pengguna memindahkan mouse:


local UserInputService = game:GetService("UserInputService")
task.wait(5)
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
UserInputService.InputChanged:Connect(function(inputObject)
if inputObject.UserInputType == Enum.UserInputType.MouseMovement then
print("Mouse delta is (" .. tostring(inputObject.Delta.X) .. ", " .. tostring(inputObject.Delta.Y) .. ")")
end
end)

Pengikatan default Roblox

Roblox menyediakan kunci default untuk semua pengalaman.Ini adalah input paling umum yang digunakan untuk gerakan, kontrol kamera, dan interaksi lingkungan dasar.Menghilangkan pengikatan yang disediakan, Anda dapat menggunakan ContextActionService untuk membuat ikatan antar platform yang menyediakan prioritas banyak ikatan ke satu action, seperti yang dijelaskan di input konteks tergantung.

Enum.CoreGuiType fitur, seperti Ransel atau Obrolan , memiliki daftar input default tambahan.Anda tidak dapat menulis ulang input yang disimpan seperti Esc (menu Roblox) atau F9 (Konsol Pengembang).

Binding ini adalah default Roblox, tetapi Anda dapat menghapusnya dengan skrip khusus.Kebanyakan pengguna Roblox akrab dengan kendaliini, jadi Anda hanya harus melewatinya dalam kasus tertentu.

InputTindakan
WBergerak ke depan
SPindah kembali
APindah ke kiri
DPindahkan ke kanan
SpacebarLompat
Putar kamera kiri atau kanan
Tombol Mouse Kanan Saat ditekan, menyeret mouse memindahkan pandangan kamera di sekitar
Roda Gulir Mouse IOPerbesar atau perkecil kamera ke dalam atau ke luar
ShiftAktifkan kunci mouse jika EnableMouseLockOption diaktif