PhysicsService

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無法建立
服務

PhysicsService 主要包含用於與 衝突群 交互的方法,定義是否有一組零件可能或不可能與其他衝突群中的零件碰撞。您可以通過 RegisterCollisionGroup() 註冊碰撞群,並將零件配置給碰撞群,設置這些零件的 CollisionGroup 屬性為碰撞群組的 名稱

創建、刪除和修改衝突群之間的衝突關係受到服務器側限制 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"

請注意,此方法基於工作區中的 BaseParts 數量有一點性能過載,因此建議您在編輯時通過 Studio 編輯器 註冊所有碰撞組,並盡量少呼叫 UnregisterCollisionGroup()RenameCollisionGroup() 以降低頻率。

參數

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

()

重命名指定的註冊碰撞群組,但不會重命名使用該群組的零件的 屬性。此方法的第一個參數是要重命名的群組名稱,第二個參數是群組的新名稱。如果指定的群組不存在,此方法將無法執行任何操作。新名稱的命名規則與如果使用 RegisterCollisionGroup() 創建群組時相同。

在下列情況下,此方法將在運行時發生錯誤:

  • 提供的名稱無效或為空的任何一個引數數。
  • 方法從客戶端呼叫。

請注意,此方法基於工作區中的 BaseParts 數量有一點性能上升,因此建議您在編輯時通過 Studio 編輯器 註冊所有碰撞群,並盡可能地重命名它們。

參數

from: string
預設值:""
to: string
預設值:""

返回

()

UnregisterCollisionGroup

()

為指定名稱的衝突群注册取消,具有以下行為:

  • 如果提供了無效的名稱,方法將無法執行任何操作。
  • 如果保留的名稱 "Default" 被提供 如果方法從客戶端呼叫,它將發生錯誤。
  • 如果在移除衝突群時,衝突群中有任何部分,這些部分仍會保持相同的衝突群名稱。移除群組中零件的物理行為未定義,因此建議將移除群組中的任何零件移動到另一個群組,例如 "Default" 群組。

請注意,此方法基於工作區中的 BaseParts 數量有一點性能上升,因此建議您在編輯時通過 Studio 編輯器 註冊所有碰撞群,並盡量少地呼叫此方法。

參數

name: string
預設值:""

返回

()

活動