PhysicsService 主要包含与 碰撞群组 相关的方法,用于确定是否要在一组零件与其他碰撞群组中碰撞。您可以通过Class.PhysicsService:RegisterCollisionGroup()|RegisterCollision
创建、删除和修改冲突群组之间的碰撞关系是由服务器端 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:UnregisterCollisionGroup()|UnregisterCollisionGroup() 和 1> Class.Physics
参数
返回
代码示例
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 编辑器 注册所有冲突组,并在尽可能频繁地重命名它们。