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 kumpulan bertabrakan yang mendefinisikan apakah set dari bagian dapat atau tidak bertabrakan dengan bagian dalam grupbertabrakan lainnya.
Menciptakan, menghapus, dan mengubah hubungan tabrakan antara kumpulan tabrakan adalah terbatas pada pihak server Scripts .
Lihat Pembersihan Tabrakan untuk detail penggunaan di Studio dan dalam skrip.
Rangkuman
Metode
Tetapkan status tabrakan antara dua kelompok.
Mengembalikan apakah kedua kelompok akan bertabrakan.
Mengembalikan jumlah maksimum kelompok tabrakan.
Mengembalikan tabel dengan informasi tentang semua kelompok tabrakan tempat.
Memeriksa apakah kumpulan tabrakan terdaftar.
Mendaftar kumpulan tabrakan baru dengan nama yang diberikan.
Mengubah nama gruptabrakan yang ditentukan.
Tidak mendaftarkan kelompok bertabrakan untuk nama yang diberikan.
Properti
Metode
CollisionGroupSetCollidable
Tetapkan status tabrakan antara dua grup. Metode ini akan menghasilkan kesalahan jika salah satu dari grup tidak terdaftar, jadi disarankan agar Anda mengkonfirmasi pendaftaran masing-masing grup melalui PhysicsService:IsCollisionGroupRegistered() sebelum membuat panggilan ini.
Parameter
Memberikan nilai
CollisionGroupsAreCollidable
Mengembalikan apakah kedua kelompok tabrakan yang ditentukan akan bertabrakan. Metode ini juga akan mengembalikan true jika salah satu dari kelompok tidak terdaftar, karena topeng tabrakan default bertabrakan dengan semua kelompok.
Parameter
Memberikan nilai
GetMaxCollisionGroups
Mengembalikan jumlah maksimum kelompok bentrokan yang didukung oleh mesin.Nilai ini saat ini adalah 32.
Memberikan nilai
GetRegisteredCollisionGroups
Mengembalikan tabel dengan informasi tentang semua kelompok tabrakan tempat. Setiap nilai dalam tabel yang dikembalikan adalah tabel sendiri dan berisi dua anggota:
<tbody><tr><td>topeng</td><td>float</td><td>Topeng grupbertabrakan; hanya untuk penggunaan internal.</td></tr><tr><td>nama</td><td>string</td><td>Nama grupbentrokan.</td></tr></tbody>
Anggota | Jenis | Deskripsi |
---|
Memberikan nilai
IsCollisionGroupRegistered
Memeriksa apakah kumpulan tabrakan terdaftar. Disarankan agar Anda menelepon metode ini sebelum menelepon metode yang menghasilkan kesalahan untuk kumpulan tabrakan yang tidak terdaftar, seperti PhysicsService:CollisionGroupSetCollidable() .
Parameter
Memberikan nilai
RegisterCollisionGroup
Mendaftar kumpulan tabrakan baru dengan nama yang diberikan. Nama tidak boleh menjadi "Default" .
Catat bahwa metode ini memiliki sedikit overlay kinerja berdasarkan jumlah BaseParts di ruang kerja, jadi direkomendasikan agar Anda mendaftarkan semua kelompok bentrokan di waktu pengeditan melalui editor Studio dan panggil
Parameter
Memberikan nilai
Contoh Kode
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
Ganti nama grupkollisi yang terdaftar, tetapi tidak Class.BasePart.CollisionGroup|CollisionGroup nama properti bagian yang menggunakan grup. Pertama argument dari metode ini adalah nama kelompok untuk diubah,
Metode ini akan menghasilkan kesalahan pada kondisi berikut:
- Nama yang tidak valid atau kosong diberikan untuk salah satu argumen.
- Metode ini dianggap dari klien.
Catat bahwa metode ini memiliki sedikit overlay kinerja berdasarkan jumlah BaseParts di ruang kerja, jadi direkomendasikan agar Anda mendaftarkan semua grup kolisi di waktu pengeditan melalui editor Studio dan mengganti nama mereka sebanyak mungkin setiap mungkin.
Parameter
Memberikan nilai
UnregisterCollisionGroup
Unregisters kelompok kollision untuk nama yang diberikan, dengan perilaku berikut:
- Jika nama yang tidak valid diberikan, metode tidak akan melakukan apa-apa.
- Jika nama yang direservasi "Default" diberikan atau jika metode dianggil dari klien, itu akan menghasilkan kesalahan.
- Jika ada bagian dalam kumpulan tabrakan ketika dihapus, bagian-bagian ini masih akan mempertahankan nama kumpulan tabrakan yang sama. Perilaku fisik bagian dalam kumpulan yang dihapus tidak dijelaskan, jadi disarankan untuk pindahkan bagian apa pun di kumpulan yang dihapus ke gruplain, seperti grup"Default" .
Catat bahwa metode ini memiliki sedikit overlay kinerja berdasarkan jumlah BaseParts di ruang kerja, jadi direkomendasikan agar Anda mendaftarkan semua kelompok bentrokan di waktu pengeditan melalui editor Studio dan panggil metode ini seefekifienya mungkin.