PhysicsService

顯示已棄用項目

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

無法建立
服務

PhysicsService 主要包含與 碰撞群組 相關的方法,以確定是否要在一組零件與其他碰撞群組中碰撞。您可以通過 Class.PhysicsService:RegisterCollisionGroup()|Register

創建、刪除和修改碰撞群之間的衝突關係是 Scripts 側的。

請參閱 撞擊過濾 以取得 Studio 和內部指令碼的使用說明。

概要

方法

屬性

方法

CollisionGroupSetCollidable

void

設定兩個群組之間的碰撞狀態。此方法將在兩個群組之一未註冊時發生錯誤,因此建議您在 PhysicsService:IsCollisionGroupRegistered() 之前確認每個群組的註冊。

參數

name1: string
name2: string
collidable: bool

返回

void

CollisionGroupsAreCollidable

返回兩個指定的衝突群是否會相互碰撞。此方法將返回 true ,如果兩個群組未註冊,因為預設的衝突面具會與所有群組碰撞。

參數

name1: string
name2: string

返回

GetMaxCollisionGroups

返回引擎支持的最大碰撞群組數量。目前值為 32 個。


返回

GetRegisteredCollisionGroups

返回一個包含所有空間方碰撞群組的資訊的表。每個值在返回的表中都是自己的表,並且包含兩個成員:


<tbody>
<tr>
<td>面具</td>
<td>整數</td>
<td>衝突群組的面具;僅供內部使用。</td>
</tr>
<tr>
<td>名稱</td>
<td>字串</td>
<td>衝突群組的名稱。</td>
</tr>
</tbody>
成員類型說明

返回

IsCollisionGroupRegistered

檢查是否有衝突群組已註冊。建議您在註冊方法為未註冊衝突群組,例如 PhysicsService:CollisionGroupSetCollidable() 之前呼叫此方法。

參數

name: string

返回

RegisterCollisionGroup

void

註冊一個新的衝突群組,以指定的名稱。名稱不能是 "Default"

注意,此方法有一些輕微的性能上限,取決於工作區的 BaseParts 數量,因此建議您在編輯時通過 Studio 編輯器 註冊所有衝突群組,並且 Class.PhysicsService

參數

name: string

返回

void

範例程式碼

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

void

重新命名指定註冊的衝突群組,但不會 不 重新命名 CollisionGroup 的零件。 此方法的第一個參數是群組的名稱,第二個參數是新名稱群組。

此方法在下列情況下會發生時間錯誤:

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

注意,此方法有一些微的性能擁有率,因為在工作區中有 BaseParts 的數量,因此建議您在 Studio 編輯器 上註冊所有衝突群組,並且盡可能頻繁地重命名它們。

參數

from: string
to: string

返回

void

UnregisterCollisionGroup

void

為指定名稱取消衝突群組的註冊,並且執行以下行為:

  • 如果提供了無效的名稱,方法將無法執行任何操作。
  • 如果提供了預留名稱 "Default" 或 #number1</number1> ,如果方法從客戶端呼叫,將發生錯誤。
  • 當它移除時,如果有任何部分在衝突群中,那些部分仍然會保持相同的衝突群名稱。物理上,在移除群中的任何部分都是未定義的,因此建議將任何部分移動到另一個群組,例如 "Default" 群組。

注意,此方法有一些微的性能上限,取決於工作區內的 BaseParts 數量,因此建議您在編輯時通過 Studio 編輯器 註冊所有衝突群,並且盡可能在 Studio 編輯器 呼叫此方法。

參數

name: string

返回

void

活動