PhysicsService

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

无法创建
服务

PhysicsService 主要包含与 碰撞群组 相关的方法,用于确定是否要在一组零件与其他碰撞群组中碰撞。您可以通过Class.PhysicsService:RegisterCollisionGroup()|RegisterCollision

创建、删除和修改冲突群组之间的碰撞关系是由服务器端 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:UnregisterCollisionGroup()|UnregisterCollisionGroup() 和 1> Class.Physics

参数

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" 如果方法从客户端调用,它将抛出一个错误。
  • 如果在冲突群组中有任何部分被移除,那么这些部分仍然会保持同一的冲突群组名称。物理上,在移除群组中的部分是无定义的,因此建议将任何部分移动到另一个群组,例如 "Default" 群组。

注意,此方法基于工作区的 BaseParts 数量,因此您建议在 Studio 编辑器 注册所有冲突组,并在调用此方法尽可能频繁。

参数

name: string

返回

void

活动