PhysicsService

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง
บริการ

PhysicsService ส่วนใหญ่ประกอบด้วยวิธีการทำงานกับ กลุ่มการชนกัน ซึ่งกำหนดว่าชุดส่วนอาจหรือไม่อาจชนกับชิ้นส่วนในกลุ่มการชนกันอื่น ๆคุณสามารถลงทะเบียนกลุ่มการชนกันผ่าน และกำหนดส่วนให้กับกลุ่มการชนกันโดยการตั้งค่าคุณสมบัติของส่วนเหล่านั้น ให้เป็นชื่อกลุ่มการชนกัน

การสร้าง ลบ และแก้ไขความสัมพันธ์การชนกันระหว่างกลุ่มการชนกันจำกัดอยู่ที่ด้านเซิร์ฟเวอร์ Scripts

ดู การกรองการชนกัน สำหรับรายละเอียดการใช้งานใน Studio และภายในสคริปต์

สรุป

วิธีการ

คุณสมบัติ

วิธีการ

CollisionGroupSetCollidable

()

ตั้งสถานะการชนกันระหว่างสองกลุ่มวิธีนี้จะโยนข้อผิดพลาดหากกลุ่มใดก็ได้ไม่ได้ลงทะเบียน ดังนั้นจึงแนะนำให้คุณยืนยันการลงทะเบียนของแต่ละกลุ่มผ่าน PhysicsService:IsCollisionGroupRegistered() ก่อนที่จะทำการโทรนี้

พารามิเตอร์

name1: string
ค่าเริ่มต้น: ""
name2: string
ค่าเริ่มต้น: ""
collidable: boolean
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

CollisionGroupsAreCollidable

ส่งคืนว่ากลุ่มชนที่สองที่ระบุจะชนกันหรือไม่วิธีนี้จะยังคืนค่าเป็นจริงหากกลุ่มใดกลุ่มหนึ่งไม่ได้ลงทะเบียน เนื่องจากหน้ากากการชนการเริ่มต้นชนกับกลุ่มทั้งหมด

พารามิเตอร์

name1: string
ค่าเริ่มต้น: ""
name2: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

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()

พารามิเตอร์

name: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

RegisterCollisionGroup

()

ลงทะเบียนกลุ่มการชนกันใหม่ด้วยชื่อที่กำหนด ชื่อไม่สามารถเป็น "Default" ได้

โปรดทราบว่าวิธีนี้มีภาระงานเล็กน้อยขึ้นอยู่กับจํานวน ในพื้นที่ทํางานดังนั้นจึงแนะนําให้คุณลงทะเบียนกลุ่มการชนกันทั้งหมดในเวลาแก้ไขผ่านเครื่องมือ Studio และเรียก และ ให้น้อยที่สุดเท่าที่เป็นไปได้

พารามิเตอร์

name: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

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().

PhysicsService:RegisterCollisionGroup

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 และเปลี่ยนชื่อให้น้อยที่สุดเท่าที่เป็นไปได้

พารามิเตอร์

from: string
ค่าเริ่มต้น: ""
to: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

UnregisterCollisionGroup

()

ลบกลุ่มการชนกันสำหรับชื่อที่กำหนดด้วยพฤติกรรมต่อไปนี้:

  • หากชื่อไม่ถูกต้องถูกจัดให้ วิธีการจะไม่ทำอะไรเลย
  • หากชื่อสำรอง "Default" ถูกจัดให้ หรือ หากวิธีการถูกเรียกจากไคลเอนต์ จะเกิดข้อผิดพลาด
  • หากมีส่วนใดในกลุ่มการชนกระทบเมื่อถูกลบออก ส่วนเหล่านั้นจะยังคงใช้ชื่อกลุ่มการชนเดียวกันพฤติกรรมทางกายภาพของชิ้นส่วนในกลุ่มที่ถูกลบไม่ได้รับการกำหนด ดังนั้นจึงแนะนำให้ย้ายชิ้นส่วนในกลุ่มที่ถูกลบไปยังกลุ่มอื่น เช่นกลุ่ม "Default"

โปรดทราบว่าวิธีนี้มีภาระงานเล็กน้อยขึ้นอยู่กับจํานวน ในพื้นที่ทํางานดังนั้นจึงแนะนําให้คุณลงทะเบียนกลุ่มการชนกันทั้งหมดในเวลาแก้ไขผ่านเครื่องมือ Studio และเรียกวิธีนี้ให้น้อยที่สุดเท่าที่เป็นไปได้

พารามิเตอร์

name: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

อีเวนต์