PhysicsService primarily contains methods for working with collision
groups which define whether a set of parts may or may not collide with parts
in other collision groups. You can register a collision group through
RegisterCollisionGroup() and
assign parts to it by setting those parts'
CollisionGroup property to the name of the
collision group.
Creating, deleting, and modifying collision relationships between collision
groups is limited to server-side Scripts.
Sets the collision status between two groups. This method will throw an
error if either of the groups is unregistered, so it's recommended that
you confirm each group's registration through
PhysicsService:IsCollisionGroupRegistered() before making this
call.
Returns whether the two specified collision groups will collide. This
method will also return true if either of the groups are unregistered, as
the default collision mask collides with all groups.
Creates a new collision group with the given name, and returns the ID of
the created group.
This function is deprecated. It exists only for backward compatibility, and should not be used for new work. RegisterCollisionGroup should be used instead.
Returns the name of the collision group with the corresponding ID. This
method will return nil if the group with the corresponding ID has not
been named.
This function is deprecated. It exists only for backward compatibility, and should not be used for new work. CollisionGroup should be used instead.
Returns a table with info on all of the place's collision groups. Each
value in the returned table is itself a table containing three members:
Member
Type
Description
id
integer
The ID of the group.
mask
integer
The collision group's mask; only for internal use.
name
string
The name of the collision group.
This function is deprecated. It exists only for backward compatibility, and should not be used for new work. GetRegisteredCollisionGroups should be used instead.
Checks if a collision group is registered. It's recommended that you call
this method before calling methods that throw errors for unregistered
collision groups, such as
PhysicsService:CollisionGroupSetCollidable().
Registers a new collision group with the given name. The name cannot be
"Default".
Note that this method has a slight performance overhead based on the
number of BaseParts in the workspace, so it's recommended
that you register all collision groups at edit time through the Studio
editor and call
UnregisterCollisionGroup()
and RenameCollisionGroup()
as infrequently as possible.
Removes the collision group with the given name. If an invalid name is
provided, this method will not do anything, although if the reserved name
"Default" is provided, it will throw an error. If there are any parts in
the collision group when it is removed, these parts will still maintain
the same collision group ID. The physical behavior of parts in a removed
group is undefined, so it is recommended to move any parts in a removed
group to another group. This method will throw a runtime error in the
following circumstances:
The name "Default" is provided.
The method is called from a client.
This function is deprecated. It exists only for backward compatibility, and should not be used for new work. UnregisterCollisionGroup should be used instead.
Renames the specified registered collision group, but does not rename
the CollisionGroup property of parts that
utilize the group. The first argument of this method is the name of the
group to rename, the second argument is the new name for the group. If the
specified group does not exist, this method will not do anything. The
naming conventions for the new name follow the same rules as if the group
was being created with
RegisterCollisionGroup().
This method will throw a runtime error in the following circumstances:
Invalid or empty name provided for either argument.
The method is called from a client.
Note that this method has a slight performance overhead based on the
number of BaseParts in the workspace, so it's recommended
that you register all collision groups at edit time through the Studio
editor and rename
them as infrequently as possible.
This method sets the collision group of the specified part to the group
with the specified name. It is equivalent to setting the
BasePart.CollisionGroupId, although calling this method is the
recommended approach.
This method will throw a runtime error in the following circumstances:
Unregisters the collision group for the given name, with the following
behaviors:
If an invalid name is provided, the method will not do anything.
If the reserved name "Default" is provided or if the method is
called from a client, it will throw an error.
If there are any parts in the collision group when it is removed, those
parts will still maintain the same collision group name. The physical
behavior of parts in a removed group is undefined, so it's recommended
to move any parts in a removed group to another group, such as the
"Default" group.
Note that this method has a slight performance overhead based on the
number of BaseParts in the workspace, so it's recommended
that you register all collision groups at edit time through the Studio
editor and call this
method as infrequently as possible.