PhysicsService 主要包含與 碰撞群組 相關的方法,以確定是否要在一組零件與其他碰撞群組中碰撞。您可以通過 Class.PhysicsService:RegisterCollisionGroup()|Register
創建、刪除和修改碰撞群之間的衝突關係是 Scripts 側的。
請參閱 撞擊過濾 以取得 Studio 和內部指令碼的使用說明。
概要
方法
設定兩個群組之間的衝突狀態。
返回兩個群組是否會碰撞。
返回最大碰撞群數。
返回一個包含所有空間方碰撞群組的資訊的表。
檢查是否有衝突群組已註冊。
註冊一個新的衝突群組,並且以指定的名稱。
重新命名指定的衝突群組。
不再為指定名稱註冊衝突群組。
屬性
方法
CollisionGroupSetCollidable
設定兩個群組之間的碰撞狀態。此方法將在兩個群組之一未註冊時發生錯誤,因此建議您在 PhysicsService:IsCollisionGroupRegistered() 之前確認每個群組的註冊。
參數
返回
CollisionGroupsAreCollidable
返回兩個指定的衝突群是否會相互碰撞。此方法將返回 true ,如果兩個群組未註冊,因為預設的衝突面具會與所有群組碰撞。
參數
返回
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 數量,因此建議您在編輯時通過 Studio 編輯器 註冊所有衝突群組,並且 Class.PhysicsService
參數
返回
範例程式碼
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 的零件。 此方法的第一個參數是群組的名稱,第二個參數是新名稱群組。
此方法在下列情況下會發生時間錯誤:
- 提供兩個引數數的名稱無效或為空。
- 方法從客戶端呼叫。
注意,此方法有一些微的性能擁有率,因為在工作區中有 BaseParts 的數量,因此建議您在 Studio 編輯器 上註冊所有衝突群組,並且盡可能頻繁地重命名它們。
參數
返回
UnregisterCollisionGroup
為指定名稱取消衝突群組的註冊,並且執行以下行為:
- 如果提供了無效的名稱,方法將無法執行任何操作。
- 如果提供了預留名稱 "Default" 或 #number1</number1> ,如果方法從客戶端呼叫,將發生錯誤。
- 當它移除時,如果有任何部分在衝突群中,那些部分仍然會保持相同的衝突群名稱。物理上,在移除群中的任何部分都是未定義的,因此建議將任何部分移動到另一個群組,例如 "Default" 群組。
注意,此方法有一些微的性能上限,取決於工作區內的 BaseParts 數量,因此建議您在編輯時通過 Studio 編輯器 註冊所有衝突群,並且盡可能在 Studio 編輯器 呼叫此方法。