PhysicsService
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
PhysicsService terutama berisi metode untuk bekerja dengan kelompok tabrakan yang mendefinisikan apakah satu set bagian dapat atau tidak dapat bertabrakan dengan bagian di kelompok tabrakan lain.Anda dapat mendaftarkan kelompok kolisi melalui dan menugaskan bagian ke kelompok kolisi dengan menetapkan properti bagian tersebut ke nama kelompok grup.
Membuat, menghapus, dan memodifikasi hubungan tabrakan antara kelompok tabrakan terbatas pada sisi server Scripts.
Lihat Filter Kolisi untuk rincian penggunaan di Studio dan dalam skrip.
Rangkuman
Metode
Mengatur status kolisi antara dua kelompok.
Kembalikan apakah kedua kelompok akan bertabrakan.
Kembalikan jumlah maksimum kelompok kolisi.
Kembalikan tabel dengan informasi tentang semua kelompok tabrakan tempat.
Memeriksa apakah kelompok kolisi terdaftar.
Mendaftarkan grup kolisi baru dengan nama yang diberikan.
Mengganti nama grup kolisi yang ditentukan.
Menghapus kelompok kolisi untuk nama yang diberikan.
Properti
Metode
CollisionGroupSetCollidable
Mengatur status kolisi antara dua kelompok.Metode ini akan menyebabkan kesalahan jika salah satu kelompok tidak terdaftar, jadi disarankan agar Anda mengkonfirmasi pendaftaran setiap grupmelalui PhysicsService:IsCollisionGroupRegistered() sebelum melakukan panggilan ini.
Parameter
Memberikan nilai
CollisionGroupsAreCollidable
Kembalikan apakah dua kelompok tabrakan yang ditentukan akan bertabrakan.Metode ini juga akan kembali benar jika salah satu kelompok tidak terdaftar, karena topeng kolisi default bertabrakan dengan semua kelompok.
Parameter
Memberikan nilai
GetMaxCollisionGroups
Kembalikan jumlah maksimum kelompok kolisi yang didukung mesin. Nilai ini saat ini adalah 32.
Memberikan nilai
GetRegisteredCollisionGroups
Kembalikan tabel dengan informasi tentang semua kelompok tabrakan tempat. Setiap nilai di tabel yang dikembalikan adalah tabel sendiri dan berisi dua anggota:
<th>Jenis</th><th>Deskripsi</th></tr></thead><tbody><tr><td>topeng</td><td>integer</td><td>Topeng grupkolisi; hanya untuk penggunaan internal.</td></tr><tr><td>nama</td><td>string</td><td>Nama grupkolisi.</td></tr></tbody>
Anggota |
---|
Memberikan nilai
IsCollisionGroupRegistered
Memeriksa apakah kelompok kolisi terdaftar.Disarankan agar Anda memanggil metode ini sebelum memanggil metode yang menyebabkan kesalahan untuk kelompok tabrakan yang tidak terdaftar, seperti PhysicsService:CollisionGroupSetCollidable() .
Parameter
Memberikan nilai
RegisterCollisionGroup
Mendaftarkan grup kolisi baru dengan nama yang diberikan. Nama tidak boleh "Default" .
Perhatikan bahwa metode ini memiliki sedikit peningkatan kinerja berdasarkan jumlah di ruang kerja, jadi disarankan agar Anda mendaftarkan semua kelompok kolisi pada saat pengeditan melalui editor Studio dan memanggil dan sebanyak mungkin sesering mungkin.
Parameter
Memberikan nilai
Contoh Kode
This example demonstrates one basic use of collision groups. It assigns BallPart to "CollisionGroupBall" and DoorPart to "CollisionGroupDoor", then makes the two groups non-collidable using PhysicsService:CollisionGroupSetCollidable().
local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- Register collision groups
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- Assign parts to collision groups
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- Set groups as non-collidable with each other and check the result
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false
RenameCollisionGroup
Mengganti nama grupkolisi terdaftar yang ditentukan, tetapi tidak tidak mengganti properti CollisionGroup bagian yang menggunakan grup.Argumen pertama dari metode ini adalah nama kelompok untuk diubah nama, argumen kedua adalah nama baru untuk grup.Jika kelompok yang ditentukan tidak ada, metode ini tidak akan melakukan apa pun.Konvensi penamaan untuk nama baru mengikuti aturan yang sama seolah-olah kelompok dibuat dengan RegisterCollisionGroup() .
Metode ini akan menyebabkan kesalahan runtime dalam situasi berikut:
- Nama tidak valid atau kosong yang disediakan untuk argumen mana pun.
- Metode dipanggil dari klien.
Perhatikan bahwa metode ini memiliki sedikit peningkatan kinerja berdasarkan jumlah di ruang kerja, jadi disarankan untuk mendaftarkan semua kelompok kolisi pada saat pengeditan melalui editor Studio dan menggantinya dengan sekurang-kurangnya mungkin.
Parameter
Memberikan nilai
UnregisterCollisionGroup
Menghapus kelompok kolisi untuk nama yang diberikan, dengan perilaku berikut:
- Jika nama tidak valid disediakan, metode tidak akan melakukan apa pun.
- Jika nama yang disediakan "Default" diberikan atau jika metode dipanggil dari klien, itu akan menyebabkan kesalahan.
- Jika ada bagian dalam kelompok kolisi saat dihapus, bagian-bagian tersebut masih akan mempertahankan nama kelompok kolisi yang sama.Perilaku fisik bagian dalam kelompok yang dihapus tidak didefinisikan, jadi disarankan untuk memindahkan bagian mana pun di kelompok yang dihapus ke gruplain, seperti grup"Default".
Perhatikan bahwa metode ini memiliki peningkatan kinerja sedikit berdasarkan jumlah di ruang kerja, jadi disarankan untuk mendaftarkan semua kelompok kolisi pada saat pengeditan melalui editor Studio dan memanggil metode ini sebagai sering mungkin.