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