Workspace
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Tugas utama dari Workspace adalah untuk menahan objek yang ada di dunia 3D, secara efektif BaseParts dan Attachments .Sementara objek seperti itu adalah keturunan dari Workspace , mereka akan aktif.Untuk BaseParts , ini berarti mereka akan ditampilkan, dan secara fisik berinteraksi dengan bagian lain dan dunia.Untuk Attachments , ini berarti bahwa objek yang dihias untuk mereka, seperti ParticleEmitters , Beams , dan BillboardGuis , akan ditampilkan.
Memahami perilaku ini penting, karena berarti objek dapat dihapus dari Workspace ketika tidak diperlukan.Sebagai contoh, peta Models dapat dihapus ketika peta yang berbeda diputar.Objek yang tidak langsung dibutuhkan di dunia 3D umumnya disimpan di ReplicatedStorage atau ServerStorage .
Dalam perannya sebagai pemegang objek 3D aktif, Workspace termasuk beberapa fungsi berguna yang terkait dengan bagian, posisi, dan persambungan di antara mereka.
Mengakses Ruang Kerja
Workspace dapat diakses dengan beberapa cara, semua di antaranya valid.
- workspace
- game:GetService("Workspace")
- game.Workspace
Catatan
- Objek yang membutuhkan perhiasan, seperti ParticleEmitters dan BillboardGuis , akan berada di posisi
(0, 0, 0) ketika diberikan kepada Workspace tanpa perhiasan lain yang atur. - Metode Model:MakeJoints() dan Model:BreakJoints() yang diwarisi dari kelas Model dibatalkan oleh Workspace:MakeJoints() dan Workspace:BreakJoints() yang hanya dapat digunakan di plugin.
- Tidak mungkin menghapus Workspace .
- Objek saat ini dari klien dapat diakses menggunakan properti .
- Objek Terrain dapat diakses menggunakan properti Workspace.Terrain.
Rangkuman
Properti
Kepadatan udara di leveltanah, digunakan dalam model kekuatan aerodinamis.
Menentukan apakah aset yang dibuat oleh pengguna lain dapat dijual dalam game.
Mengidentifikasi mode pengekangan animasi untuk klien lokal.
Objek Camera yang digunakan oleh pemain lokal.
Jumlah waktu, dalam detik, bahwa permainan telah berjalan.
Menentukan ketinggian di mana jatuh BaseParts dan leluhur mereka Models dihapus dari Workspace .
Menentukan apakah mesin fisika menghitung kekuatan aerodinamik pada yang propertinya adalah benar.
Menentukan vektor angin global untuk rumput medan beranimasi, awan dinamis, dan partikel.
Menentukan akselerasi karena gravitasi yang diterapkan pada jatuh BaseParts .
Mengaktifkan dukungan untuk batasan untuk IKControls. Jika dinonaktifkan, IKControls mengabaikan batasan fisika.
Mengatur apakah kepala karakter dan aksesori harus diunduh sebagai MeshParts.
Mengontrol logika yang digunakan untuk memilih bagian akar assemblasi saat menggunakan salah satu batas penggerak.
Mengatur bagaimana solver akan memajukan simulasi fisika ke depan dalam waktu.
Konfigurasi ketika mesin memulai kembali penangani acara.
Konfigurasi bagaimana mesin memutuskan kapan harus Stream konten jauh dari pemain.
Apakah streaming konten diaktifkan untuk tempat.
Menentukan apakah StreamingIntegrityMode aktif.
Jarak minimum yang konten akan disiarkan ke pemain dengan prioritas tinggi.
Jarak maksimum yang konten akan disiarkan ke pemain.
Referensi ke objek referensi Terrain yang diberikan ke Workspace .
Menentukan apakah parts di berbagai kelompok diatur untuk tidak bertabrakan akan mengabaikan tabrakan dan peristiwa sentuhan.
Mengatur tingkat rincian pada model untuk pengalaman dengan streaming instansi diaktifkan.
Mengontrol perilaku streaming model di Models ketika streaming instansi diaktifkan.
Bagian utama dari Model , atau nil jika tidak secara eksplisit ditetapkan.
Properti hanya editor yang digunakan untuk memperluas model di sekitar titik pivotnya. Mengatur properti ini akan memindahkan skala seolah-olah Model/ScaleTo dipanggil di atasnya.
Menentukan di mana titik pivot dari yang tidak memiliki set terletak.
Metode
Kembalikan jumlah BaseParts yang dianggap aktif secara fisik, karena baru-baru ini berada di bawah pengaruh fisika.
Kembalikan bilangan bulat, antara 0 dan 100, yang mewakili persentase waktu nyata yang saat ini dibatasi oleh simulasi fisika.
Kembalikan jumlah frame per detik yang saat ini fisika sedang disimulasikan.
Kembalikan waktu Unix server dalam detik.
Membuat persambungan antara Parts yang ditentukan dan bagian yang disentuh tergantung pada permukaan bagian dan mode pembuatan persambungan yang ditentukan.
Kembalikan true jika permainan memiliki solver PGS Fisika diaktifkan.
Memecahkan semua persambungan antara BaseParts dan lainnya BaseParts yang ditentukan.
Posisi dan memperbesar Workspace.CurrentCamera untuk menunjukkan seberapa besar BaseParts saat ini di Workspace .
Kembalikan benar jika salah satu dari yang diberikan BasePart menyentuh bagian lain.
Memancarkan bentuk blok dalam arah tertentu dan kembalikan RaycastResult jika bentuk memukul sel BasePart atau Terrain .
Kembalikan array bagian yang mana kotak batasnya tumpang tindih pada kotak tertentu.
Kembalikan array bagian yang mana kotak batasnya tumpang tindih pada bidang tertentu.
Kembalikan array bagian yang ruangnya dibagikan dengan bagian yang diberikan.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):()
Pindahkan bagian yang ditentukan ke lokasi yang ditentukan melalui kinematika terbalik daripada langsung memindahkannya ke sana, untuk memastikan setiap persyaratan, batasan, atau tabrakan yang diikuti bagian tersebut tetap puas secara fisik.
Melemparkan sinar menggunakan asal, arah, dan opsional RaycastParams , kemudian mengembalikan RaycastResult jika objek atau wilayah yang memenuhi syarat berinterseks dengan sinar.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Memancarkan bentuk bola di arah tertentu dan kembalikan RaycastResult jika bentuk memukul sel BasePart atau Terrain .
Memajukan simulasi untuk bagian di dunia ke depan berdasarkan peningkatan waktu yang ditentukan dan satu set opsi BaseParts .
Atur model ini menjadi permanen untuk pemain yang ditentukan. ModelStreamingMode harus diatur menjadi PersistentPerPlayer agar perilaku dapat diubah sebagai hasil dari penambahan.
Kembalikan deskripsi volume yang berisi semua bagian dari Model.
Kembalikan ukuran kotak batas terkecil yang berisi semua BaseParts di dalam Model, sesuai dengan Model.PrimaryPart jika diatur.
Kembalikan semua objek Player yang persisten untuk objek model ini.Perilaku bervariasi tergantung pada apakah metode ini dipanggil dari Script atau LocalScript.
Kembalikan skala kanonik model, yang defaultnya adalah 1 untuk model yang baru dibuat dan akan berubah saat skalanya diubah melalui Model/ScaleTo .
Pindahkan PrimaryPart ke posisi yang diberikan. Jika bagian utama belum ditentukan, bagian akar model akan digunakan.
Membuat model ini tidak lagi permanen untuk pemain yang ditentukan. ModelStreamingMode harus diatur ke PersistentPerPlayer agar perilaku berubah sebagai hasil dari penghapusan.
Mengatur faktor skala model, menyesuaikan ukuran dan lokasi semua Instans anak sehingga mereka memiliki faktor skala relatif terhadap ukuran dan lokasi awal mereka saat faktor skala adalah 1.
Bergeser ke Model dengan offset yang diberikan Vector3 , menyimpan orientasi model.Jika lain BasePart atau Terrain sudah ada di posisi baru maka Model akan tumpang tindih dengan objek yang dikatakan.
Mendapatkan pivot dari PVInstance .
Mengubah PVInstance bersama dengan semua keturunannya PVInstances sehingga pivot sekarang terletak di lokasi yang ditentukan CFrame .
Acara
Melepaskan api ketika model permanen telah dikirim ke pemain yang ditentukan.
Properti
AirDensity
Tingkat tanah ( Y dari 0) densitas udara di RMU/stud³ unit (lihat Unit Roblox ), digunakan untuk menghitung kekuatan aerodinamik jika Workspace.FluidForces adalah Experimental .Standar default sesuai dengan ketebalan udara tingkat laut realistis pada suhu dan tekanan standar.Kepadatan udara menurun saat ketinggian Y meningkat, mencapai 5% dari nilai tingkat tanahnya di 100.000 stud.Di bawah Y dari 0, konsentrasi udara diperbaiki pada nilai input.
AllowThirdPartySales
Properti ini Workspace menentukan apakah aset yang dibuat oleh penggunaan lain dapat dijual dalam game.
Apa penjualan pihak ketiga?
Ketika nilai ini palsu, seperti yang default, hanya aset yang dibuat oleh pembuat tempat (apakah itu pemain atau grup) dan Roblox dapat dijual menggunakan MarketplaceService .
Dalam kebanyakan kasus, permainan tidak perlu menjual aset pihak ketiga.Namun, beberapa permainan seperti pertemuan perdagangan membutuhkan fitur ini dan karena itu ada sebagai opsi opt-in.
Produk pihak ketiga apa yang bisa saya jual?
Catatan, produk pengembang hanya dapat dijual dalam game yang mereka terkait dengan, terlepas dari apa yang diatur oleh AllowThirdPartySales.Properti ini memengaruhi Pas Permainan dan pakaian.
AvatarUnificationMode
ClientAnimatorThrottling
Mengidentifikasi Enum.ClientAnimatorThrottlingMode untuk digunakan untuk klien lokal.
Saat diaktifkan, animasi pada instans terdistribusi secara remote-simulasi Model akan mulai memperlambat. Penghenti menghitung intensitas penyempurnaan menggunakan:
- FPS dalam game
- Jumlah animasi aktif
CurrentCamera
Objek Camera yang digunakan oleh pemain lokal.
Cara menggunakan Kamera Saat Ini
Saat mencari objek klien Camera , gunakan properti ini daripada mencari anak dari Workspace bernama "Kamera".
Ketika Anda mengatur properti ini, semua objek lain Camera di dalam Workspace dihancurkan, termasuk sebelumnya CurrentCamera .Jika Anda mengatur properti ini ke nil atau ke kamera yang bukan keturunan dari Workspace (atau CurrentCamera lainnya hancur), akan dibuat dan ditugaskan Camera baru.Hindari skenario ini, karena menghancurkan kamera dapat memiliki konsekuensi tak terduga.
Untuk informasi lebih lanjut, lihat Memprogram Kamera.
DistributedGameTime
Jumlah waktu, dalam detik, bahwa permainan telah berjalan.
Meskipun judul, nilai ini saat ini tidak 'Distribusi' di klien dan server.Sebagai gantinya, di server itu mewakili berapa lama server telah berjalan.Pada klien, itu mewakili berapa lama klien terhubung ke server.
Pengembang tidak boleh mengandalkan perilaku di atas, dan kemungkinan besar properti ini akan disinkronkan di antara klien dan server di masa depan.
Mereka yang mencari waktu sejak program mulai berjalan harus menggunakan fungsi 'waktu' sebagai gantinya.Lihat di bawah ini untuk perbandingan antara DistributedGameTime dan alternatifnya.
local Workspace = game:GetService("Workspace")print(Workspace.DistributedGameTime) -- Time the game started runningprint(os.time()) -- Time since epoch (1 January 1970, 00:00:00) UTCprint(tick()) -- Time since epoch (1 January 1970, 00:00:00) system timeprint(time()) -- Time the game started runningprint(elapsedTime()) -- Time since Roblox started running
FallHeightEnabled
FallenPartsDestroyHeight
Properti ini menentukan ketinggian di mana Mesin Roblox secara otomatis menghapus jatuh BaseParts dan leluhur mereka Models dari Workspace dengan membesarkan mereka ke nil .Ini untuk mencegah bagian yang telah jatuh dari peta untuk terus jatuh selamanya.
Jika bagian dihapus karena perilaku ini adalah bagian terakhir dalam Model, model itu juga akan dihapus.Ini berlaku untuk semua nenek moyang model dari bagian.
Properti ini dibatasi antara -50.000 dan 50.000 karena BaseParts tidak melakukan simulasi atau menampilkan dengan benar pada jarak besar dari asal karena ketidakakuratan poin mengambang.
Properti ini dapat dibaca oleh skrip, tetapi hanya dapat ditetapkan oleh plugin, bilah perintah, atau jendela properti di Studio.
FluidForces
Dengan properti ini diaktifkan, mesin fisika menghitung kekuatan aerodinamik pada BaseParts yang propertinya EnableFluidForces benar.Pengaturan default, Default , menonaktifkan kekuatan aerodinamis.Perhatikan bahwa properti ini tidak dapat ditetapkan melalui skrip dan harus diaktifkan kembali di Studio.
GlobalWind
Properti ini menentukan arah dan kekuatan angin yang meniup melalui pengalaman, mempengaruhi rumput medan, awan dinamis, dan partikel.Lihat artikel Angin Global untuk rincian.
Gravity
Menentukan akselerasi karena gravitasi yang diterapkan pada jatuh BaseParts .Nilai ini diukur dalam stud per detik persegi dan secara default diatur ke 196,2 stud/detik 2 .Dengan mengubah nilai ini, pengembang dapat menyimulasikan efek gravitasi lebih rendah atau lebih tinggi dalam game.
Contoh Kode
This script creates a touch pad in the workspace that, when touched, will reduce the game's gravity. Activating the pad again will switch back to normal gravity.
local MOON_GRAVITY_RATIO = 1.62 / 9.81
local DEFAULT_GRAVITY = 196.2
local MOON_GRAVITY = DEFAULT_GRAVITY * MOON_GRAVITY_RATIO
-- Create a touch pad
local pad = Instance.new("Part")
pad.Size = Vector3.new(5, 1, 5)
pad.Position = Vector3.new(0, 0.5, 0)
pad.Anchored = true
pad.BrickColor = BrickColor.new("Bright green")
pad.Parent = workspace
-- Listen for pad touch
local enabled = false
local debounce = false
local function onPadTouched(_hit)
if not debounce then
debounce = true
enabled = not enabled
workspace.Gravity = enabled and MOON_GRAVITY or DEFAULT_GRAVITY
pad.BrickColor = enabled and BrickColor.new("Bright red") or BrickColor.new("Bright green")
task.wait(1)
debounce = false
end
end
pad.Touched:Connect(onPadTouched)
IKControlConstraintSupport
Mengaktifkan dukungan untuk batasan untuk IKControls.Nilai Default adalah sama dengan Enabled.Jika dinonaktifkan, IKControls mengabaikan batasan fisika.Lihat IKControl untuk rincian tambahan.
InsertPoint
MeshPartHeadsAndAccessories
Mengatur apakah kepala karakter dan aksesori harus diunduh sebagai MeshParts .Nilai Default adalah sama dengan Enabled.Jika fitur ini diaktifkan, avatar bawaan akan menggunakan MeshParts untuk Kepala dan Aksesori karakter.
ModelStreamingBehavior
MoverConstraintRootBehavior
Mengontrol logika yang digunakan untuk memilih bagian akar assemblasi untuk mekanisme yang menggunakan salah satu batasan berikut:
Ketika properti ini diatur ke Enum.MoverConstraintRootBehaviorMode.Enabled , batasan ini akan diabaikan saat memilih bagian akar assemblasi jika batasan tidak mengirimkan kekuatan antara dua bagian (beberapa contoh adalah AngularVelocity.ReactionTorqueEnabled diatur ke false , AlignPosition.ReactionForceEnabled diatur ke false , atau AlignOrientation.Mode diatur ke Enum.OrientationAlignmentMode.OneAttachment ).
Ketika properti ini diatur ke Enum.MoverConstraintRootBehaviorMode.Disabled , batasan ini dapat salah dianggap saat memilih bagian akar assemblasi, yang menyebabkan kepemilikan jaringan yang tidak konsisten dan penundaan saat menambahkan batasan ini ke mekanisme.
PathfindingUseImprovedSearch
PhysicsImprovedSleep
PhysicsSteppingMethod
Mengatur bagaimana solver akan memajukan simulasi fisika ke depan dalam waktu.Opsi ini tidak dapat diskripkan dan harus diatur dari properti PhysicsSteppingMethod dari Workspace di dalam Studio.Lihat Adaptif Timestepping untuk rincian.
<th>Deskripsi</th></tr></thead><tbody><tr><td><b>Beradaptasi</b></td><td>Mesin mencoba menetapkan tingkat simulasi optimal untuk kumpulan individu dari 240 Hz, 120 Hz, atau 60 Hz.Pengaturan ini dioptimalkan untuk pelaksanaan.</td></tr><tr><td><b>Diperbaiki</b></td><td>Semua kumpulan simulasi di dalam ruang kerja akan maju ke depan pada 240 Hz. Opsi ini terbaik untuk stabilitas dan akurasi simulasi optimal.</td></tr><tr><td><b>Standar</b></td><td>Default saat ini adalah <b>Diperbaiki</b>.</td></tr></tbody>
Pilihan |
---|
Perhatikan bahwa ketika kumpulan tingkat simulasi yang berbeda terhubung melalui Constraints atau tabrakan, mekanisme gabungan akan default ke tingkat simulasi tertinggi untuk stabilitas.
PlayerCharacterDestroyBehavior
PrimalPhysicsSolver
RejectCharacterDeletions
RenderingCacheOptimizations
ReplicateInstanceDestroySetting
Retargeting
SandboxedInstanceMode
SignalBehavior
Properti ini menentukan apakah penangan acara akan dilanjutkan segera saat acara terjadi, atau ditunda dan kemudian dilanjutkan di titik penangguhan kembali nanti.Titik lanjutan saat ini termasuk:
- Pemrosesan input (berlanjut setiap input yang akan diproses, lihat UserInputService )
- Skrip tunggu warisan dilanjutkan seperti wait() , spawn() , dan delay()
Untuk informasi lebih lanjut, lihat Peristiwa Tertunda.
StreamOutBehavior
Kontrol StreamOutBehavior mengontrol di mana konten akan dihapus dari ReplicationFocus berdasarkan Kondisi Memori Perangkat, atau berdasarkan Jarak Streaming.
Lihat juga:
- Workspace.StreamingEnabled yang mengontrol apakah streaming konten diaktifkan
StreamingEnabled
Properti StreamingEnabled menentukan apakah streaming konten game diaktifkan untuk tempat.Properti ini tidak dapat diskripkan dan oleh karena itu harus diatur pada objek Ruang kerja di Studio.
Lihat juga:
StreamingIntegrityMode
Jika instansi streaming diaktifkan, pengalaman dapat berperilaku dengan cara yang tidak dimaksudkan jika karakter pemain bergerak ke wilayah dunia yang belum diputar ke klien mereka.Fitur integritas streaming menawarkan cara untuk menghindari situasi berpotensi bermasalah tersebut.
StreamingMinRadius
Properti StreamingMinRadius menunjukkan radius di sekitar karakter pemain atau saat ini ReplicationFocus di mana konten akan diputar dengan prioritas tertinggi.Default ke 64 studs.
Perawatan harus diambil saat meningkatkan radius minimum default karena melakukannya akan membutuhkan lebih banyak memori dan lebih banyak bandwidth server dengan biaya komponen lainnya.
Lihat juga:
- Workspace.StreamingEnabled yang mengontrol apakah streaming konten diaktifkan
StreamingTargetRadius
Properti StreamingTargetRadius mengontrol jarak maksimum dari karakter pemain atau ReplicationFocus saat ini di mana konten akan diputar.Default ke 1024 studs.
Perhatikan bahwa mesin diizinkan untuk menyimpan konten yang sebelumnya dimuat di luar radius target, memungkinkan memori.
Lihat juga:
- Workspace.StreamingEnabled yang mengontrol apakah streaming konten diaktifkan
Terrain
Properti ini adalah referensi ke objek Terrain yang diberikan ke Workspace .

Lihat Tanah Lingkungan untuk informasi lebih lanjut.
TouchEventsUseCollisionGroups
TouchesUseCollisionGroups
Properti ini menentukan apakah parts di berbagai kelompok diatur untuk tidak bertabrakan akan mengabaikan tabrakan dan peristiwa sentuhan.Secara default, nilai properti ini diatur ke false .
Ketika properti ini diaktifkan, bagian di berbagai kelompok diatur untuk tidak bertabrakan juga akan mengabaikan properti CanTouch, mirip dengan cara BasePart.CanCollide diabaikan.Untuk informasi lebih lanjut tentang perilaku CanTouch, kunjungi halaman propertinya.
Metode
GetNumAwakeParts
Kembalikan jumlah BaseParts yang dianggap aktif secara fisik, karena baru-baru ini berada di bawah pengaruh fisika.
Fungsi ini memberikan ukuran berapa banyak BaseParts yang dipengaruhi oleh, atau baru-baru ini berada di bawah pengaruh, kekuatan fisik.
local Workspace = game:GetService("Workspace")print(Workspace:GetNumAwakeParts())
Tidur vs Suku Cadang Terbangun
Untuk memastikan kinerja pelaksanaanbaik, Roblox menetapkan BaseParts di mana fisika tidak diterapkan ke negara 'tidur'. BaseParts dengan BasePart.Anchored diatur ke benar, misalnya, akan selalu tidur karena fisika tidak berlaku untuk mereka.Ketika kekuatan diterapkan pada non terikat BasePart, keadaan 'terjaga' akan diterapkan.Sementara BasePart bangun, mesin fisika Roblox akan melakukan perhitungan terus menerus untuk memastikan kekuatan fisik berinteraksi dengan bagian dengan benar.Setelah BasePart tidak lagi tunduk pada kekuatan fisik, itu akan kembali ke keadaan 'tidur'.
Memberikan nilai
Jumlah bagian yang terjaga.
GetPhysicsThrottling
Kembalikan bilangan bulat, antara 0 dan 100, yang mewakili persentase waktu nyata yang saat ini dibatasi oleh simulasi fisika.
Fungsi ini dapat digunakan untuk menentukan apakah, dan sejauh mana, penurunan fisika terjadi.
Apa itu pengurangan fisika?
Pengurangan fisika terjadi ketika mesin fisika mendeteksi bahwa itu tidak dapat mengikuti permainan secara real time.Ketika fisika dibatasi, itu akan diperbarui lebih jarang menyebabkan BaseParts untuk tampak bergerak lebih lambat.
Tanpa memperlambat, simulasi fisika akan jatuh lebih jauh di belakang keluar dari sinkronisasi dengan game.Ini dapat menyebabkan tingkat frame yang lebih rendah dan perilaku tidak diinginkan lainnya.
Objek yang terkait dengan Humanoids dibebaskan dari pengurangan fisika.
Lihat juga Workspace:SetPhysicsThrottleEnabled() .
Memperlihatkan pengurangan fisika
Pengembang harus selalu menghindari membuat tempat yang membebani mesin fisika, karena dapat menyebabkan pengalaman sub-par bagi pemain.Namun, mereka yang ingin menyimulasikan penurunan fisika untuk tujuan penelitian hanya perlu membuat banyak Parts sangat cepat.
local Workspace = game:GetService("Workspace")local i = 0while true doi += 1if i % 5 == 0 thentask.wait()endlocal part = Instance.new("Part", Workspace)end
Memberikan nilai
Persentase waktu nyata di mana simulasi fisika saat ini dibatasi.
GetRealPhysicsFPS
Kembalikan jumlah frame per detik yang saat ini fisika sedang disimulasikan.
Menggunakan GetRealPhysicsFPS untuk melawan pengeksploiter
Penggunaan umum dari fungsi ini adalah untuk mendeteksi apakah pengeksploiter meningkatkan tingkat fisika lokal mereka untuk bergerak lebih cepat.Ini umumnya dilakukan dengan membandingkan hasil yang dikembalikan oleh GetRealPhysicsFPS klien dengan batas maksimum yang tidak akan dilanggar dalam kondisi normal (biasanya 65 atau 70).Jika batas ini dilanggar, pengembang dapat menggunakan fungsi Player:Kick() untuk menghapus itu Player dari game.Penting untuk diingat bahwa, meskipun praktik ini terkadang bisa efektif, langkah anti-eksploitasi sisi klien tidak pernah 100% dapat diandalkan.
Memberikan nilai
Kembalikan jumlah frame per detik yang saat ini fisika sedang disimulasikan.
Contoh Kode
Speed exploiters commonly increase their local physics FPS in order to increase their character speed. This can be detected from a LocalScript by checking if the player's physics FPS is over the maximum:
local Players = game:GetService("Players")
local player = Players.LocalPlayer
while task.wait(1) do
if workspace:GetRealPhysicsFPS() > 65 then
player:Kick()
end
end
GetServerTimeNow
GetServerTimeNow() mengembalikan kiraan terbaik klien tentang waktu saat ini di server.Ini berguna untuk membuat pengalaman sinkronisasi karena setiap klien akan mendapatkan hasil yang sama terlepas dari zona waktu atau jam lokal mereka.
Ini menghasilkan timestamp Unix, mirip dengan os.time() , yang dapat digunakan dengan os.date() atau dengan DateTime.fromUnixTimestamp() .
Stempel waktu yang dikembalikan oleh fungsi ini disглажива sehingga:
- Ini monotonik; nilainya tidak akan pernah berkurang.
- Ini bergerak dengan kecepatan yang sama dengan jam lokal ke dalam 0,6%.
GetServerTimeNow() adalah mahal untuk dipanggil dibandingkan dengan DateTime.now() , dan kurang akurat dari os.clock() , jadi harus digunakan untuk memastikan sebuah acara dimulai pada waktu dunia nyata yang tepat atau untuk menyesuaikan hal-hal secara berkala untuk menjaga serangkaian acara tetap sinkron.
Fungsi ini bergantung pada server, jadi memanggilnya dari klien yang tidak terhubung akan menyebabkan kesalahan.Perhatikan juga bahwa fungsi ini tidak cocok untuk hal-hal seperti hadiah terjadwal karena tidak aman dibandingkan dengan melacak timer seperti itu di server.
Lihat juga:
- DistributedGameTime , jam waktu permainan
Memberikan nilai
Estimasi waktu戳 Unix di server.
JoinToOutsiders
Fungsi ini membuat persambungan antara Parts yang ditentukan dan bagian yang disentuh tergantung pada permukaan bagian dan mode pembuatan persambungan yang ditentukan.
Fungsi ini membuat persambungan antara Bagian yang ditentukan dan setiap permukaan sentuh datar, tergantung pada permukaan bagian dan mode pembuatan persambungan yang ditentukan.
- Lem, Stud, Inlet, Universal, Las, dan Permukaan halus semua akan membuat instans Welding.
- Bola tidak akan disambung ke apa pun. Sisi bulat silinder tidak akan disambung, tetapi sisi ujung datar akan.
Parameter pertama adalah array dari BaseParts.Sendi hanya akan dibuat antara bagian dalam array dan tidak di array.Sendi tidak akan dibuat di antara bagian-bagian dalam array.
Parameter kedua adalah Enum.JointCreationMode yang menentukan bagaimana persambungan akan dibuat.Melewati nilai enum, Enum.JointCreationMode.All atau Enum.JointCreationMode.Surface , memiliki perilaku yang sama yang setara dengan Bergabung Selalu
Fungsi ini digunakan oleh alat Pindahkan Studio Roblox saat pengguna selesai memindahkan seleksi.Bersama dengan Plugin:GetJoinMode() dan Workspace:UnjoinFromOutsiders() dapat digunakan untuk mempertahankan fungsi bergabung saat mengembangkan alat pembuatan studio khusus.Lihat potongan di bawah ini untuk contoh.
local Workspace = game:GetService("Workspace")
-- Selesai memindahkan seleksi; buat persambungan
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")
-- Mulai bergerak memilih; pecahkan persambungan
local function startMovingParts(parts)
Workspace:UnjoinFromOutsiders(parts)
end
Parameter
Sebuah array dari BaseParts untuk siapa joins harus dibuat.
The Enum.JointCreationMode untuk digunakan. Melewati di Enum.JointCreationMode.All atau Enum.JointCreationMode.Surface memiliki perilaku yang sama yang setara dengan Bergabung Selalu.
Memberikan nilai
PGSIsEnabled
Kembalikan true jika permainan memiliki solver PGS Fisika diaktifkan.
Karena tidak dapat diakses oleh skrip, fungsi PGSIsEnabled memungkinkan pengembang untuk memberi tahu solver fisika mana yang digunakan game.
Memberikan nilai
Benar jika solver PGS diaktifkan.
UnjoinFromOutsiders
Memecahkan semua persambungan antara BaseParts dan lainnya BaseParts yang ditentukan.
Fungsi ini membutuhkan array dari BaseParts.Catatan, sambungan tidak akan rusak di antara ini BaseParts (antara satu sama lain), hanya di antara ini BaseParts dan lainnya BaseParts tidak dalam array.
Fungsi ini digunakan oleh alat Pindahkan Studio Roblox saat pengguna mulai memindahkan seleksi.Bersama dengan Plugin:GetJoinMode() dan Workspace:JoinToOutsiders() dapat digunakan untuk mempertahankan fungsi bergabung saat mengembangkan alat pembuatan Studio khusus.Lihat potongan di bawah ini untuk contoh.
local Workspace = game:GetService("Workspace")
-- Finished moving a selection; make joints
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")
-- Started moving a selection; break joints
local function startMovingParts(parts)
Workspace:UnjoinFromOutsiders(parts)
end
Parameter
Sebuah array dari BaseParts untuk siapa joins harus dipatahkan.
Memberikan nilai
ZoomToExtents
Posisi dan memperbesar Workspace.CurrentCamera untuk menunjukkan seberapa besar BaseParts saat ini di Workspace .
Fungsi ini digunakan dalam, sekarang dihapus, tombol 'Zoom To Extents' di Roblox Studio.Ini menampilkan perilaku serupa dengan fitur 'Zoom To' (F pintasan) namun menunjukkan ekstensi dari Workspace daripada objek yang saat ini dipilih.
Fungsi ini tidak dapat digunakan dalam skrip tetapi akan berfungsi di bilah perintah atau plugin.
Memberikan nilai
Acara
PersistentLoaded
Peristiwa ini terjadi setiap kali pemain telah dikirim semua model persisten saat ini dan model atom tanpa bagian.Paraметir player menunjukkan pemain mana yang telah menerima semua instans yang berlaku.
Perhatikan bahwa pemuatan pengalaman terjadi sebelum pemuatan permanen, dan penembakan acara DataModel.Loaded tidak menunjukkan bahwa semua model permanen hadir.