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 sesuai dengan 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 bersama dengan kendala mekanis dan kendala penggerak untuk membentuk mekanisme seperti mobil atau pesawat terbang. Seiring dengan meningkatnya jumlah rangkaian dan kendala dalam suatu mekanisme, waktu yang diperlukan untuk mensimulasikan mekanisme tersebut 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: terjaga, tidur, atau memeriksa tidur.

Terjaga

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

Tidur

Rangkaian yang tidur tidak bergerak atau mempercepat, dan oleh karena itu tidak disimulasikan.

Sebuah rangkaian ditentukan tidak bergerak dengan memeriksa kecepatan linier dan kecepatan rotasi-nya. 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, hanya memeriksa ketidakgerakan dapat menyebabkan rangkaian secara keliru memasuki status tidur. Misalnya, jika sebuah bola dilempar ke atas, kecepatannya mendekati nol saat mencapai ketinggian maksimum, menjadikannya kandidat untuk tidur dan tidak pernah jatuh kembali. Untuk menangani kasus seperti itu, mesin menganggap sebuah rangkaian sedang mempercepat jika percepatan linier atau percepatan rotasi-nya lebih besar dari ambang batas Percepatan Linier dan Percepatan Rotasi, masing-masing, dan akan mencegah rangkaian tersebut tertidur.

Memeriksa tidur

Sebuah rangkaian yang tidak bergerak dan berbagi kendala dengan setidaknya satu rangkaian terjaga ditempatkan dalam status memeriksa tidur dan tidak disimulasikan. Pada setiap langkah dunia, sebuah rangkaian yang memeriksa tidur memeriksa apakah:

Jika salah satu dari kondisi ini benar, atau di bawah salah satu situasi bangun tambahan, rangkaian yang memeriksa tidur memasuki status terjaga.

Referensi ambang

Tabel berikut memberikan berbagai ambang kecepatan dan percepatan yang digunakan untuk menentukan apakah sebuah rangkaian bergerak atau mempercepat.

AmbangNilaiPerubahan status
Kecepatan Linier0.33 studs/sterjaga ⟩ tidur
Kecepatan Rotasi0.42 studs/sterjaga ⟩ tidur
Percepatan Linier0.24 studs/s²terjaga ⟩ tidur
Percepatan Rotasi0.24 studs/s²terjaga ⟩ tidur
Kecepatan Linier Tetangga0.48 studs/smemeriksa tidur ⟩ terjaga
Kecepatan Rotasi Tetangga0.59 studs/smemeriksa tidur ⟩ terjaga
Percepatan Linier Bangun16.9 studs/s²terjaga ⟩ tidur
Percepatan Rotasi Bangun16.9 studs/s²terjaga ⟩ tidur

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

Sendi yang digerakkan

Terkadang pengembang ingin menggerakkan bagian dengan sangat lambat menggunakan sendi yang digerakkan, sebuah kendala yang menerapkan gaya atau gerakan untuk menggerakkan 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 kapan rangkaian tersebut tertidur, memungkinkan gerakan lambat yang terkontrol tanpa sistem fisika yang terlalu cepat menidurkan mereka.

Berikut adalah yang dianggap sebagai sendi yang digerakkan:

Situasi bangun tambahan

Selain situasi yang dijelaskan dalam memeriksa tidur dan tidur, sebuah rangkaian memasuki status terjaga ketika:

Visualisasi debug

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

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

Setelah diaktifkan, bagian yang disimulasikan akan digarisbawahi oleh status tidur mereka saat ini, dengan bagian terjaga digarisbawahi dengan warna merah, bagian memeriksa tidur digarisbawahi dengan warna oranye, dan bagian tidur tidak digarisbawahi.

Bagian yang disimulasikan digarisbawahi oleh 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.