Sistem Tidur

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

Setiap rangkaian dalam Roblox Engine mendapat pasangan dari satu badan kaku. Posisi dan kecepatan setiap badan kaku menggambarkan di mana ia berada dan seberapa cepat ia bergerak, dan salah satu tugas utama mesin adalah memperbarui posisi dan kecepatan setiap rangkaian.

Rangkaian dapat dihubungkan satu sama lain dengan konstraint mekanik dan konstraint penggerak untuk membentuk mekanisme seperti mobil atau pesawat. Seiring dengan meningkatnya jumlah rangkaian dan konstraint dalam suatu mekanisme, waktu yang dibutuhkan untuk mensimulasikan mekanisme juga meningkat. Untungnya, peningkatan ini diimbangi ketika sistem tidur menentukan bahwa mesin dapat melewatkan simulasi rangkaian yang tidak bergerak.

Status Tidur

Setiap rangkaian dapat berada dalam salah satu dari tiga status: terbangun, tidur, atau memeriksa-tidur.

Terbangun

Rangkaian yang terbangun sedang bergerak atau mempercepat, dan oleh karena itu disimulasi. Rangkaian memasuki status ini dari situasi yang dijelaskan dalam tidur dan memeriksa-tidur, serta situasi bangun tambahan.

Tidur

Rangkaian yang tidur tidak bergerak maupun mempercepat, dan oleh karena itu tidak disimulasi.

Suatu rangkaian dianggap tidak bergerak dengan memeriksa kecepatan linier dan kecepatan rotasinya. Jika kecepatan liniernya kurang dari ambang batas Kecepatan Linier dan kecepatan rotasinya kurang dari ambang batas Kecepatan Rotasi, rangkaian dianggap tidak bergerak.

Dalam beberapa kasus, cukup memeriksa non-gerakan dapat menyebabkan rangkaian secara salah memasuki status tidur. Misalnya, jika bola dilempar vertikal ke atas, kecepatannya mendekati nol saat mencapai ketinggian maksimum, menjadikannya kandidat untuk tidur dan tidak pernah jatuh kembali. Untuk menangani kasus seperti ini, mesin menganggap rangkaian sedang mempercepat jika percepatan linier atau percepatan rotasi lebih besar dari ambang batas Percepatan Linier dan Percepatan Rotasi, masing-masing, dan akan mencegah rangkaian dari tidur.

Memeriksa-tidur

Rangkaian yang tidak bergerak dan berbagi suatu konstraint dengan setidaknya satu rangkaian terbangun tetangga dipindahkan ke status memeriksa-tidur dan tidak disimulasi. Pada setiap langkah dunia, rangkaian yang memeriksa-tidur memeriksa apakah:

Jika salah satu dari kondisi ini benar, atau dalam salah satu dari situasi bangun tambahan, rangkaian yang memeriksa-tidur memasuki status terbangun.

Referensi ambang batas

Tabel berikut menyediakan berbagai ambang kecepatan dan percepatan yang digunakan untuk menentukan apakah suatu rangkaian sedang bergerak atau mempercepat.

Ambang BatasNilaiPerubahan status
Kecepatan Linier0.33 studs/sterbanguntidur
Kecepatan Rotasi0.42 studs/sterbanguntidur
Percepatan Linier0.24 studs/s²terbanguntidur
Percepatan Rotasi0.24 studs/s²terbanguntidur
Kecepatan Linier Tetangga0.48 studs/smemeriksa-tidurterbangun
Kecepatan Rotasi Tetangga0.59 studs/smemeriksa-tidurterbangun
Bangun Percepatan Linier16.9 studs/s²terbanguntidur
Bangun Percepatan Rotasi16.9 studs/s²terbanguntidur

Ambang tingkat kecepatan dan percepatan rotasi mencerminkan kecepatan dan percepatan dari titik yang terletak pada bola pembatas rangkaian (sebuah bola yang mencakup semua bagian dalam sebuah rangkaian) yang bergerak kokoh dengan rangkaian tersebut.

Sendi yang Digerakkan

Kadang-kadang pengembang ingin menggerakkan bagian-bagian dengan sangat lambat menggunakan sendi yang digerakkan, suatu konstraint yang menerapkan gaya atau gerakan untuk menggerakkan bagian-bagian yang terhubung, seperti HingeConstraint menggunakan Motor. Untuk mendukung skenario ini, rangkaian yang terhubung ke sendi yang digerakkan menggunakan ambang kecepatan tidur yang lebih ketat. Ini menunda ketika rangkaian tersebut masuk tidur, memungkinkan gerakan lambat yang terkontrol tanpa sistem fisika yang terlalu cepat menidurkan mereka.

Berikut ini yang dianggap sebagai sendi yang digerakkan:

Situasi bangun tambahan

Selain situasi yang dijelaskan dalam memeriksa-tidur dan tidur, suatu rangkaian memasuki status terbangun ketika:

Visualisasi debug

Saat pengujian permainan, Anda dapat memvisualisasikan status tidur rangkaian dengan mengaktifkan Bagian Tertidur dari widget Opsi Visualisasi di sudut kanan atas viewport 3D.

Tampilan dekat viewport 3D dengan tombol Opsi Visualisasi ditunjukkan di sudut kanan atas.

Setelah diaktifkan, bagian yang disimulasi akan digarisbawahi oleh status tidur saat ini, dengan bagian terbangun digarisbawahi dengan warna merah, bagian memeriksa-tidur digarisbawahi dengan warna oranye, dan bagian tidur tidak digarisbawahi.

Bagian yang disimulasi digarisbawahi dengan warna yang mewakili status tidur mereka saat ini
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.