PhysicsService
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
PhysicsService ส่วนใหญ่ประกอบด้วยวิธีการทำงานกับ กลุ่มการชนกัน ซึ่งกำหนดว่าชุดส่วนอาจหรือไม่อาจชนกับชิ้นส่วนในกลุ่มการชนกันอื่น ๆคุณสามารถลงทะเบียนกลุ่มการชนกันผ่าน และกำหนดส่วนให้กับกลุ่มการชนกันโดยการตั้งค่าคุณสมบัติของส่วนเหล่านั้น ให้เป็นชื่อกลุ่มการชนกัน
การสร้าง ลบ และแก้ไขความสัมพันธ์การชนกันระหว่างกลุ่มการชนกันจำกัดอยู่ที่ด้านเซิร์ฟเวอร์ Scripts
ดู การกรองการชนกัน สำหรับรายละเอียดการใช้งานใน Studio และภายในสคริปต์
สรุป
วิธีการ
ตั้งสถานะการชนกันระหว่างสองกลุ่ม
ส่งคืนว่ากลุ่มทั้งสองจะชนกันหรือไม่
ส่งคืนจํานวนกลุ่มการชนกันสูงสุด
คืนตารางที่มีข้อมูลเกี่ยวกับกลุ่มการชนกันทั้งหมดของสถานที่
ตรวจสอบว่ากลุ่มการชนกำลังลงทะเบียนหรือไม่
ลงทะเบียนกลุ่มการชนกันใหม่ด้วยชื่อที่กำหนดไว้
เปลี่ยนชื่อกลุ่มการชนที่ระบุ
ลบกลุ่มการชนการสำหรับชื่อที่กำหนดไว้
คุณสมบัติ
วิธีการ
CollisionGroupSetCollidable
ตั้งสถานะการชนกันระหว่างสองกลุ่มวิธีนี้จะโยนข้อผิดพลาดหากกลุ่มใดก็ได้ไม่ได้ลงทะเบียน ดังนั้นจึงแนะนำให้คุณยืนยันการลงทะเบียนของแต่ละกลุ่มผ่าน PhysicsService:IsCollisionGroupRegistered() ก่อนที่จะทำการโทรนี้
พารามิเตอร์
ส่งค่ากลับ
CollisionGroupsAreCollidable
ส่งคืนว่ากลุ่มชนที่สองที่ระบุจะชนกันหรือไม่วิธีนี้จะยังคืนค่าเป็นจริงหากกลุ่มใดกลุ่มหนึ่งไม่ได้ลงทะเบียน เนื่องจากหน้ากากการชนการเริ่มต้นชนกับกลุ่มทั้งหมด
พารามิเตอร์
ส่งค่ากลับ
GetMaxCollisionGroups
ส่งคืนจํานวนกลุ่มการชนกันสูงสุดที่เครื่องสนับสนุน ขณะนี้มีค่าเป็น 32
ส่งค่ากลับ
GetRegisteredCollisionGroups
คืนตารางที่มีข้อมูลเกี่ยวกับกลุ่มการชนกันทั้งหมดของสถานที่ แต่ละค่าในตารางที่คืนมาเป็นตารางเองและมีสมาชิกสองคน:
<th>ประเภท</th><th>คําอธิบาย</th></tr></thead><tbody><tr><td>หน้ากาก</td><td>จํานวนเต็ม</td><td>หน้ากากของกลุ่มการชน; สำหรับใช้ภายในเท่านั้น</td></tr><tr><td>ชื่อ</td><td>สตริง</td><td>ชื่อของกลุ่มการชนกัน</td></tr></tbody>
สมาชิก |
---|
ส่งค่ากลับ
IsCollisionGroupRegistered
ตรวจสอบว่ากลุ่มการชนกำลังลงทะเบียนหรือไม่ขอแนะนำให้คุณโทรหาวิธีนี้ก่อนที่จะโทรหาวิธีที่โยนข้อผิดพลาดสำหรับกลุ่มการชนกันที่ไม่ได้ลงทะเบียน, เช่น PhysicsService:CollisionGroupSetCollidable()
พารามิเตอร์
ส่งค่ากลับ
RegisterCollisionGroup
ลงทะเบียนกลุ่มการชนกันใหม่ด้วยชื่อที่กำหนด ชื่อไม่สามารถเป็น "Default" ได้
โปรดทราบว่าวิธีนี้มีภาระงานเล็กน้อยขึ้นอยู่กับจํานวน ในพื้นที่ทํางานดังนั้นจึงแนะนําให้คุณลงทะเบียนกลุ่มการชนกันทั้งหมดในเวลาแก้ไขผ่านเครื่องมือ Studio และเรียก และ ให้น้อยที่สุดเท่าที่เป็นไปได้
พารามิเตอร์
ส่งค่ากลับ
ตัวอย่างโค้ด
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
เปลี่ยนชื่อกลุ่มการชนการลงทะเบียนที่ระบุ แต่ไม่ ไม่ เปลี่ยนชื่อคุณสมบัติ CollisionGroup ของชิ้นส่วนที่ใช้งрупอาร์กิวเมนต์แรกของวิธีนี้คือชื่อกลุ่มที่จะเปลี่ยนชื่อใหม่ อาร์กิวเมนต์ที่สองคือชื่อใหม่สำหรับกลุ่มหากกลุ่มที่ระบุไม่มีอยู่จริงวิธีนี้จะไม่ทำอะไรเลยข้อกำหนดการตั้งชื่อสำหรับชื่อใหม่จะปฏิบัติตามกฎเดียวกันกับกลุ่มที่ถูกสร้างขึ้นด้วย RegisterCollisionGroup()
วิธีนี้จะโยนข้อผิดพลาดในการทำงานในสถานการณ์ต่อไปนี้:
- ชื่อไม่ถูกต้องหรือว่างเปล่าที่ให้ไว้สำหรับอาร์กิวเมนต์ใดๆ
- วิธีการถูกเรียกจากไคลเอนต์
โปรดทราบว่าวิธีนี้มีความล่าช้าในการทำงานเล็กน้อยขึ้นอยู่กับจํานวน ในพื้นที่ทํางานดังนั้นจึงแนะนําให้คุณลงทะเบียนกลุ่มการชนกันทั้งหมดในเวลาแก้ไขผ่านเครื่องมือ Studio และเปลี่ยนชื่อให้น้อยที่สุดเท่าที่เป็นไปได้
พารามิเตอร์
ส่งค่ากลับ
UnregisterCollisionGroup
ลบกลุ่มการชนกันสำหรับชื่อที่กำหนดด้วยพฤติกรรมต่อไปนี้:
- หากชื่อไม่ถูกต้องถูกจัดให้ วิธีการจะไม่ทำอะไรเลย
- หากชื่อสำรอง "Default" ถูกจัดให้ หรือ หากวิธีการถูกเรียกจากไคลเอนต์ จะเกิดข้อผิดพลาด
- หากมีส่วนใดในกลุ่มการชนกระทบเมื่อถูกลบออก ส่วนเหล่านั้นจะยังคงใช้ชื่อกลุ่มการชนเดียวกันพฤติกรรมทางกายภาพของชิ้นส่วนในกลุ่มที่ถูกลบไม่ได้รับการกำหนด ดังนั้นจึงแนะนำให้ย้ายชิ้นส่วนในกลุ่มที่ถูกลบไปยังกลุ่มอื่น เช่นกลุ่ม "Default"
โปรดทราบว่าวิธีนี้มีภาระงานเล็กน้อยขึ้นอยู่กับจํานวน ในพื้นที่ทํางานดังนั้นจึงแนะนําให้คุณลงทะเบียนกลุ่มการชนกันทั้งหมดในเวลาแก้ไขผ่านเครื่องมือ Studio และเรียกวิธีนี้ให้น้อยที่สุดเท่าที่เป็นไปได้