BasePart is an abstract base class for in-world objects that render
and are physically simulated while in the Workspace. There are several
implementations of BasePart, the most common being Part and
MeshPart. Others include WedgePart, SpawnLocation, and
the singleton Terrain object. Generally, when documentation refers to
a "part," most BasePart implementations will work and not just
Part.
For information on how BaseParts are grouped into simulated
rigid bodies, see Assemblies.
There are many different objects that interact with BasePart (other
than Terrain), including:
The Anchored property determines whether the part will be immovable by
physics. When enabled, a part will never change position due to gravity,
other part collisions, overlapping other parts, or any other
physics-related causes. As a result, two anchored parts will never fire
the BasePart.Touched event on each other.
Finally, if an unanchored part is joined with an anchored part through an
object like a Weld, it too will act anchored. If such a joint
breaks, the part may be affected by physics again. See
Assemblies for more details.
Network ownership cannot be set on anchored parts. If a part's anchored
status changes on the server, the network ownership of that part will be
affected.
Applies an instant angular force impulse to this part's assembly, causing
the assembly to spin.
The resulting angular velocity from the impulse relies on the assembly's
mass. So a higher impulse is required to
move more massive assemblies. Impulses are useful for cases where you want
a force applied instantly, such as an explosion or collision.
If the part is owned by the
server, this function must be called from a server Script (not
from a LocalScript or a Script with
RunContext set to RunContext.Client).
If the part is owned by a client through automatic ownership, this
function can be called from either a client script or a server script;
calling it from a client script for a server-owned part will have no
effect.
This function applies an instant force impulse to this part's assembly.
The force is applied at the assembly's
center of mass, so the resulting
movement will only be linear.
The resulting velocity from the impulse relies on the assembly's
mass. So a higher impulse is required to
move more massive assemblies. Impulses are useful for cases where you want
a force applied instantly, such as an explosion or collision.
If the part is owned by the
server, this function must be called from a server Script (not
from a LocalScript or a Script with
RunContext set to RunContext.Client).
If the part is owned by a client through automatic ownership, this
function can be called from either a client script or a server script;
calling it from a client script for a server-owned part will have no
effect.
This function applies an instant force impulse to this part's assembly, at
the specified position in world space.
If the position is not at the assembly's
center of mass, the impulse will
cause a positional and rotational movement.
The resulting velocity from the impulse relies on the assembly's
mass. So a higher impulse is required to
move more massive assemblies. Impulses are useful for cases where
developers want a force applied instantly, such as an explosion or
collision.
If the part is owned by the
server, this function must be called from a server Script (not
from a LocalScript or a Script with
RunContext set to RunContext.Client).
If the part is owned by a client through automatic ownership, this
function can be called from either a client script or a server script;
calling it from a client script for a server-owned part will have no
effect.
If the part is owned by the
server, this property must be changed from a server Script (not
from a LocalScript or a Script with
RunContext set to RunContext.Client).
If the part is owned by a client through automatic ownership, this
property can be changed from either a client script or a server
script; changing it from a client script for a server-owned part will have
no effect.
This property is not replicated. Its interface does not cross the network boundary.
A position calculated via the mass and
position of all the parts in the assembly.
If the assembly has an anchored part, that part's center of mass will be
the assembly's center of mass, and the assembly will have infinite mass.
Knowing the center of mass can help the assembly maintain stability. A
force applied to the center of mass will not cause angular acceleration,
only linear. An assembly with a low center of mass will have a better time
staying upright under the effect of gravity.
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.
Setting the velocity directly may lead to unrealistic motion. Using a
VectorForce constraint is preferred, or use
BasePart:ApplyImpulse() if you want instantaneous change in
velocity.
If the part is owned by the
server, this property must be changed from a server Script (not
from a LocalScript or a Script with
RunContext set to RunContext.Client).
If the part is owned by a client through automatic ownership, this
property can be changed from either a client script or a server
script; changing it from a client script for a server-owned part will have
no effect.
This property is not replicated. Its interface does not cross the network boundary.
The sum of the mass of all the parts in this part's
assembly. Parts that are Massless and are not
the assembly's root part will not contribute to the AssemblyMass.
If the assembly has an anchored part, the assembly's mass is considered
infinite. Constraints and other physical interactions between unanchored
assemblies with a large difference in mass may cause instabilities.
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.
This property indicates the BasePart automatically chosen to
represent the assembly's root part. It is the same part that's returned
when developers call GetRootPart().
The root part can be changed by changing the
RootPriority of the parts in the assembly.
Parts that all share the same AssemblyRootPart are in the same assembly.
For more information on root parts, see
Assemblies.
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.
The BackParamA property is relevant when a part's
BasePart.BackSurface is set to Motor or SteppingMotor and
BasePart.BackSurfaceInput is set to Sin. It determines the
amplitude of the motor's rotational velocity, using the following
formula:
The BackParamB property is relevant when a part's
BasePart.BackSurface is set to Motor or SteppingMotor and
BasePart.BackSurfaceInput is set to Constant or Sin. For Constant,
it determines the constant rotational velocity of the motor. For Sin, it
determines the frequency of the motor's rotational velocity, using the
following formula:
The BackSurface property determines the type of surface used for the +Z
direction of a part. When two parts' faces are placed next to each other,
they may create a joint between them. If set to Motor, the
BasePart.BackSurfaceInput determines how a motor joint should
behave.
Most SurfaceTypes render a texture on the part face if the
BasePart.Material is set to Plastic. Some SurfaceTypes - Hinge,
Motor and SteppingMotor - will render a 3D adornment instead. If this
property is selected in the Properties window, it will be highlighted in
the game world similar to that of a SurfaceSelection.
The BackSurfaceInput property determines the kind of input provided to a
part's BasePart.BackSurface. This is only relevant for Motor or
SteppingMotor SurfaceTypes. This property determines how
BasePart.BackParamA and BasePart.BackParamB are used. For
brevity, these properties will be referred to as ParamA and ParamB,
respectively.
By default, this is set to NoInput. This stops the motor altogether.
For Constant, the motor rotates at a constant velocity equal to
ParamB.
For Sin, the motor rotates at a velocity equal to
ParamA * math.sin(workspace.DistributedGameTime * ParamB). See
Workspace.DistributedGameTime.
This property is deprecated. It exists only for backward compatibility, and should not be used for new work.
This property is hidden. It is not meant to be used, and may have unresolved issues.
The BottomParamA property is relevant when a part's
BasePart.BottomSurface is set to Motor or SteppingMotor and
BasePart.BottomSurfaceInput is set to Sin. It determines the
amplitude of the motor's rotational velocity, using the following
formula:
The BottomParamB property is relevant when a part's
BasePart.BottomSurface is set to Motor or SteppingMotor and
BasePart.BottomSurfaceInput is set to Constant or Sin. For
Constant, it determines the constant rotational velocity of the motor. For
Sin, it determines the frequency of the motor's rotational velocity,
using the following formula:
The BottomSurface property determines the type of surface used for the -Y
direction of a part. When two parts' faces are placed next to each other,
they may create a joint between them. If set to Motor, the
BasePart.BottomSurfaceInput determines how a motor joint should
behave.
Most SurfaceTypes render a texture on the part face if the
BasePart.Material is set to Plastic. Some SurfaceTypes - Hinge,
Motor and SteppingMotor - will render a 3D adornment instead. If this
property is selected in the Properties window, it will be highlighted in
the game world similar to that of a SurfaceSelection.
The BottomSurfaceInput property determines the kind of input provided to a
part's BasePart.BottomSurface. This is only relevant for Motor or
SteppingMotor SurfaceTypes. This property determines how
BasePart.BottomParamA and BasePart.BottomParamB are used.
For brevity, these properties will be referred to as ParamA and ParamB,
respectively.
By default, this is set to NoInput. This stops the motor altogether.
For Constant, the motor rotates at a constant velocity equal to
ParamB.
For Sin, the motor rotates at a velocity equal to
ParamA * math.sin(workspace.DistributedGameTime * ParamB). See
Workspace.DistributedGameTime.
This property is deprecated. It exists only for backward compatibility, and should not be used for new work.
This property is hidden. It is not meant to be used, and may have unresolved issues.
The BrickColor property determines the color of a part. If the part has a
BasePart.Material, this also determines the color used when
rendering the material texture. For more control over the color, the
BasePart.Color property can be used (it is a Color3 variant of
this property). If Color set, this property will use the closest
BrickColor.
The CFrame property determines both the position and orientation of
the BasePart in the world. It acts as an arbitrary reference
location on the geometry, but ExtentsCFrame
represents the actual CFrame of its physical center.
When setting CFrame on a part, other joined parts are also moved
relative to the part, but it is recommended that you use
PVInstance:PivotTo() to move an entire model, such as when
teleporting a player's character.
Unlike setting BasePart.Position, setting BasePart.CFrame
will always move the part to the exact given CFrame; in other
words: no overlap checking is done and the physics solver will attempt
to resolve any overlap unless both parts are
Anchored.
For keeping track of positions relative to a part's CFrame, an
Attachment may be useful.
CanCollide determines whether a part will physically interact with other
parts. When disabled, other parts can pass through the brick
uninterrupted. Parts used for decoration usually have CanCollide
disabled, as they need not be considered by the physics engine.
When CanCollide is disabled, parts may still fire the
BasePart.Touched event (as well the other parts touching them).
You can disable this with BasePart.CanTouch.
For more information on collisions, see
Collisions.
Returns whether the parts can collide with each other or not. This
function takes into account the collision groups of the two parts. This
function will error if the specified part is not a BasePart.
CanQuery determines whether the part is considered during spatial query
operations, such as
GetPartBoundsInBox or
Raycast. CanCollide must also be disabled
when disabling CanQuery. These functions will never include parts whose
CanQuery and CanCollide is false.
Beyond this property, it is also possible to exclude parts which are
descendants of a given list of parts using an OverlapParams or
RaycastParams object when calling the spatial query functions.
The CanSetNetworkOwnership function checks whether you can set a part's
network ownership.
The function's return value verifies whether or not you can call
BasePart:SetNetworkOwner() or
BasePart:SetNetworkOwnershipAuto() without encountering an error.
It returns true if you can modify/read the network ownership, or returns
false and the reason you can't, as a string.
This property determines if Touched and
TouchEnded events fire on the part. If true,
other touching parts must also have CanTouch set
to true for touch events to fire. If false, touch events cannot be set
up for the part and attempting to do so will throw an error. Similarly, if
the property is set to false after a touch event is connected, the event
will be disconnected and the TouchTransmitter removed.
Note that this collision logic can be set to respect
collision groups
through the Workspace.TouchesUseCollisionGroups property. If
true, parts in non-colliding groups will ignore both collisions and
touch events, thereby making this property irrelevant.
Performance
There is a small performance gain on parts that have both
CanTouch and
CanCollide set to false, as these parts will
never need to compute any kind of part to part collisions. However, they
can still be hit by Raycasts and
OverlapParams queries.
Note that this feature is not designed for performance enhancement. It
should only be disabled on parts where you want to hide the shadows the
part casts. Disabling this property for a given part may cause visual
artifacts on the shadows cast upon that part.
The CenterOfMass property describes the local position of a part's
center of mass. If this is a single part assembly, this is the
AssemblyCenterOfMass converted from world space to local. On simple
Parts, the center of mass is always (0,0,0). It can vary for
WedgePart or MeshPart however.
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.
The CollisionGroup property describes the
name of the part's collision group (maximum of 100 characters). Parts
start off in the default group whose name is "Default". This value
cannot be empty.
Although this property itself is non-replicated, the engine internally
replicates the value through another private property to solve backward
compatibility issues.
This property is not replicated. Its interface does not cross the network boundary.
The BasePart.CollisionGroupId property describes the ID number of
the part's collision group. Parts start off in the "Default" group whose
ID is 0. If a part is unregistered, the value becomes -1. This value
cannot be less than -1 and it cannot exceed
PhysicsService:GetMaxCollisionGroups(). Invalid IDs are clamped.
Although this property can be directly changed, it's recommended that you
specify the collision group by setting BasePart.CollisionGroup to
the collision group's name.
This property is deprecated. It exists only for backward compatibility, and should not be used for new work. CollisionGroup should be used instead.
This property is not replicated. Its interface does not cross the network boundary.
Thread safety
ReadSafe
Category
Collision
Loaded/Saved
true
History 8
574
Change Tags of CollisionGroupIdfrom[NotReplicated]to[NotReplicated, Deprecated]
The Color property determines the color of a part. If the part has a
BasePart.Material, this also determines the color used when
rendering the material texture. If this property is set,
BasePart.BrickColor will use the closest BrickColor to the Color3
value.
CurrentPhysicalProperties indicates the current physical properties of the
part. You can set custom values for the physical properties per part,
custom material, and material override. The
Engine prioritizes more granular definitions when determining the
effective physical properties of a part. The values in the following list
are in order from highest to lowest priority:
Custom physical properties of the part
Custom physical properties of the part's custom material
Custom physical properties of the material override of the part's
material
Default physical properties of the part's material
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.
CustomPhysicalProperties lets you customize various physical aspects of a
Part, such as its density, friction, and elasticity.
If enabled, this property let's you configure these physical properties.
If disabled, these physical properties are determined by the
BasePart.Material of the part. The page for Material
contains list of the various part materials.
Used to control the Friction of the part, but now it no longer does
anything. The Friction of a part is now determined by either its
Material or its
CustomPhysicalProperties.
This property is deprecated. It exists only for backward compatibility, and should not be used for new work.
This property is not replicated. Its interface does not cross the network boundary.
This property is hidden. It is not meant to be used, and may have unresolved issues.
The FrontParamA property is relevant when a part's
BasePart.FrontSurface is set to Motor or SteppingMotor and
BasePart.FrontSurfaceInput is set to Sin. It determines the
amplitude of the motor's rotational velocity, using the following
formula:
The FrontParamB property is relevant when a part's
BasePart.FrontSurface is set to Motor or SteppingMotor and
BasePart.FrontSurfaceInput is set to Constant or Sin. For
Constant, it determines the constant rotational velocity of the motor. For
Sin, it determines the frequency of the motor's rotational velocity,
using the following formula:
The FrontSurface property determines the type of surface used for the -Z
direction of a part. When two parts' faces are placed next to each other,
they may create a joint between them. If set to Motor, the
BasePart.FrontSurfaceInput determines how a motor joint should
behave.
Most SurfaceTypes render a texture on the part face if the
BasePart.Material is set to Plastic. Some SurfaceTypes including
Hinge, Motor, and SteppingMotor render a 3D adornment instead. If this
property is selected in the Properties window, it will be highlighted in
the game world similar to that of a SurfaceSelection.
The FrontSurfaceInput property determines the kind of input provided to a
part's BasePart.FrontSurface. This is only relevant for Motor or
SteppingMotor SurfaceTypes. This property determines how
BasePart.FrontParamA and BasePart.FrontParamB are used.
For brevity, these properties will be referred to as ParamA and ParamB,
respectively.
By default, this is set to NoInput. This stops the motor altogether.
For Constant, the motor rotates at a constant velocity equal to
ParamB.
For Sin, the motor rotates at a velocity equal to
ParamA * math.sin(workspace.DistributedGameTime * ParamB). See
Workspace.DistributedGameTime.
This property is deprecated. It exists only for backward compatibility, and should not be used for new work.
This property is hidden. It is not meant to be used, and may have unresolved issues.
Returns a table of parts connected to the object by any kind of rigid
joint.
If recursive is true this function will return all of the parts in the
assembly rigidly connected to the BasePart.
Rigid Joints
When a joint connects two parts together (Part0 → Part1), a joint is
rigid if the physics of Part1 are completely locked down by Part0.
This only applies to the following joint types:
This function used to be relevant when Roblox's lag-compensating
interpolation of parts online was internal. The interpolation is now
applied to the CFrame directly.
This function is deprecated. It exists only for backward compatibility, and should not be used for new work.
Returns the base part of an assembly. When moving an assembly of parts
using a CFrame. it is important to move this base part (this
will move all other parts connected to it accordingly). More information
is available in the Assemblies article.
This function predates the
AssemblyRootPart property. It remains
supported for backwards compatibility, but you should use
AssemblyRootPart directly.
Thread safety
Safe
History 3
486
Change ThreadSafety of GetRootPartfromReadOnlytoSafe
Returns a table of all parts that are physically interacting with this
part. If the part itself has CanCollide set to false, then this function
returns an empty table unless the part has a
TouchInterest object parented to it (meaning
something is connected to its Touched event). Parts that are adjacent but
not intersecting are not considered touching. This function predates the
WorldRoot:GetPartsInPart() function, which provides more
flexibility and avoids the special TouchInterest
rules described above. Use WorldRoot:GetPartsInPart() instead.
Returns the linear velocity of the part's assembly at the given position
relative to this part. It can be used to identify the linear velocity of
parts in an assembly other than the root part. If the assembly has no
angular velocity, than the linear velocity will always be the same for
every position.
Creates a new IntersectOperation from the intersecting geometry of
the part and the other parts in the given array. Only Parts
are supported, not Terrain or MeshParts. Similar
to Clone(), the returned object has no set
Parent.
The following properties from the calling part are applied to the
resulting IntersectOperation:
In the following image comparison,
IntersectAsync() is called on the purple
block using a table containing the blue block. The resulting
IntersectOperation resolves into a shape of the intersecting
geometry of both parts.
Notes
The original parts remain intact following a successful intersect
operation. In most cases, you should Destroy()
all of the original parts and parent the returned
IntersectOperation to the same place as the calling
BasePart.
By default, the face colors of the resulting intersection are borrowed
from the Color property of the original parts. To
change the entire intersection to a specific color, set its
UsePartColor property to true.
If an intersect operation would result in a part with more than 20,000
triangles, it will be simplified to 20,000 triangles.
This function yields. It will block the calling thread until completion.
Returns true if the object is connected to a part that will hold it in
place (eg an Anchored part), otherwise returns
false. In an assembly that has an Anchored part,
every other part is grounded.
Thread safety
Safe
History 4
486
Change ThreadSafety of IsGroundedfromReadOnlytoSafe
The LeftParamA property is relevant when a part's
BasePart.LeftSurface is set to Motor or SteppingMotor and
BasePart.LeftSurfaceInput is set to Sin. It determines the
amplitude of the motor's rotational velocity, using the following
formula:
The LeftParamB property is relevant when a part's
BasePart.LeftSurface is set to Motor or SteppingMotor and
BasePart.LeftSurfaceInput is set to Constant or Sin. For Constant,
it determines the constant rotational velocity of the motor. For Sin, it
determines the frequency of the motor's rotational velocity, using the
following formula:
The LeftSurface property determines the type of surface used for the -X
direction of a part. When two parts' faces are placed next to each other,
they may create a joint between them. If set to Motor, the
BasePart.LeftSurfaceInput determines how a motor joint should
behave.
Most SurfaceTypes render a texture on the part face if the
BasePart.Material is set to Plastic. Some SurfaceTypes including
Hinge, Motor, and SteppingMotor render a 3D adornment instead. If this
property is selected in the Properties window, it will be highlighted in
the game world similar to that of a SurfaceSelection.
The LeftSurfaceInput property determines the kind of input provided to a
part's BasePart.LeftSurface. This is only relevant for Motor or
SteppingMotor SurfaceTypes. This property determines how
BasePart.LeftParamA and BasePart.LeftParamB are used. For
brevity, these properties will be referred to as ParamA and ParamB,
respectively.
By default, this is set to NoInput. This stops the motor altogether.
For Constant, the motor rotates at a constant velocity equal to
ParamB.
For Sin, the motor rotates at a velocity equal to
ParamA * math.sin(workspace.DistributedGameTime * ParamB). See
Workspace.DistributedGameTime.
This property is deprecated. It exists only for backward compatibility, and should not be used for new work.
This property is hidden. It is not meant to be used, and may have unresolved issues.
Fired when another part comes in contact with another object. This event
only sends data to the client notifying it that two parts have collided,
whereas BasePart.Touched sends data to the server.
This event is deprecated. It exists only for backward compatibility, and should not be used for new work.
The LocalTransparencyModifier
property is a multiplier to BasePart.Transparency that is only
visible to the local client. It does not replicate from client to server
and is useful for when a part should not render for a specific client,
such as how the player does not see their character's body parts when they
zoom into first person mode.
This property modifies the local part's transparency through the following
formula, with resulting values clamped between 0 and 1.
The Locked property determines whether a part (or a
model it is contained within) may be selected in Roblox
Studio by clicking on it. This property is most often enabled on parts
within environment models that aren't being edited at the moment. Roblox
Studio has a Lock/Unlock All tool that can toggle the Locked state of
every part descendant in a model at once.
Weld will create a Weld joint with any surface except for
Unjoinable
Studs, Inlet, or Universal will each create a Snap joint with
either of other the other two surfaces (e.g. Studs with Inlet and
Universal)
Hinge and Motor surfaces create Rotate and RotateV joint
instances
Unlike Model:MakeJoints(), this function requires an array of
parts as a parameter. This array is given as follows:
part:MakeJoints({part1, part2, part3})
Joints are broken if enough force is applied to them due to an
Explosion, unless a ForceField object is parented to the
BasePart or ancestor Model. For this reason, they are
often used to make simple destructible buildings and other models.
This function is deprecated. It exists only for backward compatibility, and should not be used for new work.
If this property is enabled, the BasePart will not
contribute to the total mass or inertia of its assembly as long as it is
welded to another part that has mass.
If the part is its own root part according to
AssemblyRootPart, this will be ignored
for that part, and it will still contribute mass and inertia to its
assembly like a normal part. Parts that are massless should never become
an assembly root part unless all other parts in the assembly are also
massless.
This might be useful for things like optional accessories on vehicles that
you don't want to affect the handling of the car or a massless render mesh
welded to a simpler collision mesh.
See also Assemblies, an article
documenting what root parts are and how to use them.
The Material property allows a builder to set a part's texture and default
physical properties (in the case that
BasePart.CustomPhysicalProperties is unset). The default Plastic
material has a very light texture, and the SmoothPlastic material has no
texture at all. Some material textures like DiamondPlate and Granite have
very visible textures. Each material's texture reflects sunlight
differently, especially Foil.
Setting this property then enabling
BasePart.CustomPhysicalProperties will use the default physical
properties of a material. For instance, DiamondPlate is a very dense
material while Wood is very light. A part's density determines whether it
will float in terrain water.
The Glass material changes rendering behavior on moderate graphics
settings. It applies a bit of reflectiveness (similar to
BasePart.Reflectance) and perspective distortion. The effect is
especially pronounced on sphere-shaped parts (set BasePart.Shape
to Ball). Semitransparent objects and Glass parts behind Glass are not
visible.
The system searches the MaterialVariant instance with specified
MaterialVariant name and BasePart.Material type. If it
successfully finds a matching MaterialVariant instance, it uses this
MaterialVariant instance to replace the default material. Default material
can be the built-in material or an override MaterialVariant specified in
MaterialService.
This property is not replicated. Its interface does not cross the network boundary.
The Orientation property describes the part's rotation in degrees around
the X, Y and Z axes using a Vector3. The rotations are applied in Y → X →
Z order. This differs from proper Euler angles and is instead
Tait-Bryan angles, which describe yaw, pitch and roll. It is also
worth noting how this property differs from the CFrame.Angles()
constructor, which applies rotations in a different order (Z → Y → X). For
better control over the rotation of a part, it is recommended that
BasePart.CFrame is set instead.
When setting this property any Welds or
Motor6Ds connected to this part will have the matching
C0 or C1 property
updated and to allow the part to move relative to any other parts it is
joined to.
WeldConstraints will also be temporarily disabled and re-enabled during
the move.
This property is not replicated. Its interface does not cross the network boundary.
This property is hidden. It is not meant to be used, and may have unresolved issues.
Thread safety
ReadSafe
Category
Transform
Loaded/Saved
false
History 7
557
Change Tags of Orientationfrom[NotReplicated]to[Hidden, NotReplicated]
This property specifies the offset of the part's pivot from its
CFrame, that is part:GetPivot() is the same as
part.CFrame * part.PivotOffset.
This is convenient for setting the pivot to a location in local space,
but setting a part's pivot to a location in world space can be done as
follows:
local part = workspace.BluePart
local desiredPivotCFrameInWorldSpace = CFrame.new(0, 10, 0)
part.PivotOffset = part.CFrame:ToObjectSpace(desiredPivotCFrameInWorldSpace)
The Position property describes the coordinates of a part
using a Vector3. It reflects the position of the part's
BasePart.CFrame, however it can also be set.
When setting this property any Welds or
Motor6Ds connected to this part will have the matching
C0 or C1 property
updated and to allow the part to move relative to any other parts it is
joined to.
WeldConstraints will also be temporarily disabled and re-enabled during
the move.
This property is not replicated. Its interface does not cross the network boundary.
This property is hidden. It is not meant to be used, and may have unresolved issues.
Thread safety
ReadSafe
Category
Transform
Loaded/Saved
false
History 7
557
Change Tags of Positionfrom[NotReplicated]to[Hidden, NotReplicated]
This returns the time in seconds since the part's physics got last updated
on the local client (or the server). Returns 0 when the part has no
physics (Anchored)
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.
This property is hidden. It is not meant to be used, and may have unresolved issues.
The Reflectance property determines how much a part
reflects the skybox. A value of 0 indicates the part is not reflective at
all, and a value of 1 indicates the part should fully reflect.
Reflectance is not affected by BasePart.Transparency, unless the
part is fully transparent, in which case reflectance will not render at
all. Reflectance may or may not be ignored depending on the
BasePart.Material of the part.
The ResizeIncrement property is a read-only property that describes the
smallest change in size allowable by the BasePart:Resize() method.
It differs between implementations of the BasePart abstract class.
For instance, Part has this set to 1 and TrussPart has
this set to 2 (since individual truss sections are 2x2x2 in size).
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.
The ResizeableFaces property (with an e, not ResizableFaces) describes
using a Faces object the different faces on which a part may be resized.
For most implementations of BasePart, such as Part and
WedgePart, this property includes all faces. However,
TrussPart will set its ResizeableFaces set to only two faces since
those kinds of parts must have two BasePart.Size dimensions of
length 2. This property is most commonly used with tools used for building
and manipulating parts and has little use outside of that context. The
Handles class, which has the Handles.Faces property, can
be used in conjunction with this property to display only the handles on
faces that can be resized on a part.
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.
The RightParamA property is relevant when a part's
BasePart.RightSurface is set to Motor or SteppingMotor and
BasePart.RightSurfaceInput is set to Sin. It determines the
amplitude of the motor's rotational velocity, using the following
formula:
The RightParamB property is relevant when a part's
BasePart.RightSurface is set to Motor or SteppingMotor and
BasePart.RightSurfaceInput is set to Constant or Sin. For
Constant, it determines the constant rotational velocity of the motor. For
Sin, it determines the frequency of the motor's rotational velocity,
using the following formula:
The RightSurface property determines the type of surface used for the +X
direction of a part. When two parts' faces are placed next to each other,
they may create a joint between them. If set to Motor, the
BasePart.RightSurfaceInput determines how a motor joint should
behave.
Most SurfaceTypes render a texture on the part face if the
BasePart.Material is set to Plastic. Some SurfaceTypes including
Hinge, Motor, and SteppingMotor will render a 3D adornment instead. If
this property is selected in the Properties window, it will be highlighted
in the game world similar to that of a SurfaceSelection.
This property is an integer between -127 and 127 that takes precedence
over all other rules for root part sort. When considering multiple parts
that are not Anchored and which share the same
Massless value, a part with a higher
RootPriority will take priority over those with lower
RootPriority.
You can use this property to control which part of an assembly is the root
part and keep the root part stable if size changes.
See also Assemblies, an article
documenting what root parts are and how to use them.
The RotVelocity of a part describes how its
BasePart.Orientation is presently changing. In other words, this
property describes how the fast part is rotating. The part only rotates if
it is not anchored.
The unit of this property is radians per second.
Using this in conjunction with AlignOrientation allows for aligned
parts to have matching RotVelocity and Orientation values.
This property is deprecated. It exists only for backward compatibility, and should not be used for new work. AssemblyAngularVelocity should be used instead.
This property is hidden. It is not meant to be used, and may have unresolved issues.
Thread safety
ReadSafe
Category
Data
Loaded/Saved
true
History 6
553
Change PreferredDescriptor of RotVelocityfromtoAssemblyAngularVelocity
The rotation of the part in degrees for the three axes.
When setting this property any Welds or
Motor6Ds connected to this part will have the matching
C0 or C1 property
updated and to allow the part to move relative to any other parts it is
joined to.
WeldConstraints will also be temporarily disabled and re-enabled during
the move.
This property is not replicated. Its interface does not cross the network boundary.
A part's Size property determines its visual
dimensions, while ExtentsSize represents the
actual size used by the physics engine, such as in
collision detection. The individual
dimensions (length, width, height) can be as low as 0.001 and as high
as 2048. Size dimensions below 0.05 will be visually represented as if
the part's dimensions are 0.05.
The size of the part determines its mass which is given by
BasePart:GetMass(). A part's Size is used by
a variety of other objects:
ParticleEmitter to determine the area from which particles are
spawned.
BlockMesh to partially determine the rendered rectangular prism.
The ratio of the part's density to the density of water determined by the
BasePart.Material. Effects the part's behavior when in a water
terrain cell. Essentially, SpecificGravity refers to how many times more
dense a part is than water.
Material
SpecificGravity
Plastic
0.7
Wood
0.35
Slate
2.7
Concrete
2.4
CorrodedMetal
7.85
DiamondMetal
7.85
Foil
7.6
Grass
0.9
Ice
0.91
Marble
2.56
Granite
2.7
Brick
1.92
Pebble
2.4
Sand
1.6
Fabric
0.7
SmoothPlastic
0.7
Metal
7.85
WoodPlanks
0.35
Cobblestone
2.7
This property is deprecated. It exists only for backward compatibility, and should not be used for new work.
This property is not replicated. Its interface does not cross the network boundary.
This property is read-only. Its value can be read, but it cannot be modified.
Creates a new UnionOperation from the part, minus the geometry
occupied by the parts in the given array. Only Parts are
supported, not Terrain or MeshParts. Similar to
Clone(), the returned object has no set
Parent.
Note that the resulting union cannot be empty due to subtractions. If the
operation would result in completely empty geometry, it will fail.
In the following image comparison,
SubtractAsync() is called on the blue
cylinder using a table containing the purple block. The resulting
UnionOperation resolves into a shape that omits the block's
geometry from that of the cylinder.
This function yields. It will block the calling thread until completion.
The TopParamA property is relevant when a part's
BasePart.TopSurface is set to Motor or SteppingMotor and
BasePart.TopSurfaceInput is set to Sin. It determines the
amplitude of the motor's rotational velocity, using the following
formula:
The TopParamB property is relevant when a part's
BasePart.TopSurface is set to Motor or SteppingMotor and
BasePart.TopSurfaceInput is set to Constant or Sin. For Constant,
it determines the constant rotational velocity of the motor. For Sin, it
determines the frequency of the motor's rotational velocity, using the
following formula:
The TopSurface property determines the type of surface used for the +Y
direction of a part. When two parts' faces are placed next to each other,
they may create a joint between them. If set to Motor, the
BasePart.TopSurfaceInput determines how a motor joint should
behave.
Most SurfaceTypes render a texture on the part face if the
BasePart.Material is set to Plastic. Some SurfaceTypes - Hinge,
Motor and SteppingMotor - will render a 3D adornment instead. If this
property is selected in the Properties window, it will be highlighted in
the game world similar to that of a SurfaceSelection.
The TopSurfaceInput property determines the kind of input provided to a
part's BasePart.TopSurface. This is only relevant for Motor or
SteppingMotor SurfaceTypes. This property determines how
BasePart.TopParamA and BasePart.TopParamB are used. For
brevity, these properties will be referred to as ParamA and ParamB,
respectively.
By default, this is set to NoInput. This stops the motor altogether,
For Constant, the motor rotates at a constant velocity equal to
ParamB.
For Sin, the motor rotates at a velocity equal to
ParamA * math.sin(workspace.DistributedGameTime * ParamB). See
Workspace.DistributedGameTime.
This property is deprecated. It exists only for backward compatibility, and should not be used for new work.
This property is hidden. It is not meant to be used, and may have unresolved issues.
The Touched event fires when a part comes in contact with another
part. For instance, if PartA bumps into PartB, then
PartA.Touched fires with PartB, and
PartB.Touched fires with PartA.
This event only fires as a result of physical movement, so it will not
fire if the CFrame property was changed such that
the part overlaps another part. This also means that at least one of the
parts involved must not be Anchored at the
time of the collision.
The Transparency property controls the visibility of a part on a scale of
0 to 1, where 0 is completely visible (opaque), and a value of 1 is
completely invisible (not rendered at all).
BasePart.Reflectance can reduce the overall transparency of a
brick if set to a value close to 1.
While fully transparent parts are not rendered at all, partially
transparent objects have some significant rendering costs. Having many
translucent parts may slow down the game's performance.
When transparent parts overlap, render order can act unpredictable - try
to keep semi-transparent parts from overlapping to avoid this.
Creates a new UnionOperation from the part, plus the geometry
occupied by the parts in the given array. Only Parts are
supported, not Terrain or MeshParts. Similar to
Clone(), the returned object has no set
Parent.
The following properties from the calling part are applied to the
resulting UnionOperation:
In the following image comparison,
UnionAsync() is called on the blue block
using a table containing the purple cylinder. The resulting
UnionOperation resolves into a shape of the combined geometry of
both parts.
Notes
The original parts remain intact following a successful union operation.
In most cases, you should Destroy() all of the
original parts and parent the returned UnionOperation to the
same place as the calling BasePart.
By default, the resulting union respects the
Color property of each of its parts. To change
the entire union to a specific color, set its
UsePartColor property to true.
If a union operation would result in a part with more than 20,000
triangles, it will be simplified to 20,000 triangles.
This function yields. It will block the calling thread until completion.
The Velocity of a part describes how its BasePart.Position is
presently changing. The unit of this property is studs per second. For
reference, the default Roblox character moves at 16 studs per second via
Humanoid.WalkSpeed. The acceleration due to gravity is found in
Workspace.Gravity (by default, -196.2 studs per second per
second).
Setting the Velocity of a part that is BasePart.Anchored will
cause it to act like a conveyor belt. Any object that touches the part
will begin to move in accordance with the Velocity.
Some BodyMover objects will apply forces and thus change the
Velocity of a part over time. The simplest of these is a BodyForce
which can be used to counteract the acceleration due to gravity on a
single part (set the +Y axis of the BodyForce.Force to the product
of the mass (BasePart:GetMass()) and the gravity constant).
This property is deprecated. It exists only for backward compatibility, and should not be used for new work. AssemblyLinearVelocity should be used instead.
This property is hidden. It is not meant to be used, and may have unresolved issues.
Thread safety
ReadSafe
Category
Data
Loaded/Saved
true
History 6
553
Change PreferredDescriptor of VelocityfromtoAssemblyLinearVelocity