Skip to content

BasePart

Supported Class Physics NotBrowsable NotCreatable

The abstract base class for in-world objects that physically interact.

80 Nova members · 28 modern Roblox members not implemented yet

Description

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:

Inheritance

Object → Instance → PVInstance → BasePart

Nova inheritance: Instance → PVInstance → BasePart

Known subclasses: CornerWedgePart, FormFactorPart, MeshPart, ParallelRampPart, PartOperation, PrismPart, PyramidPart, RightAngleRampPart, and 4 more

Properties

Anchored Supported Property Determines whether a part is immovable by physics.
Anchored: bool

Determines whether a part is immovable by physics.

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 Touched event on each other.

An anchored part may still be moved by changing its CFrame or Position, and it still may have a nonzero AssemblyLinearVelocity and AssemblyAngularVelocity.

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.

Roblox documentation

BackParamA Supported Property Deprecated Determines the first parameter for the SurfaceType on the Back face of a part.
BackParamA: float

Determines the first parameter for the SurfaceType on the Back face of a part.

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.

Roblox documentation

BackParamB Supported Property Deprecated Determines the second parameter for the SurfaceType on the Back face of a part.
BackParamB: float

Determines the second parameter for the SurfaceType on the Back face of a part.

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.

Roblox documentation

BackSurface Supported Property Determines the type of surface for the back face of a part.
BackSurface: SurfaceType

Determines the type of surface for the back face of a part.

The BackSurface property determines the type of surface used for the positive Z direction of a part. When two parts' faces are placed next to each other, they may create a joint between them.

Roblox documentation

BackSurfaceInput Supported Property Deprecated Determines the kind of input for the Back face of a part.
BackSurfaceInput: InputType

Determines the kind of input for the Back face of a part.

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.

Roblox documentation

BottomParamA Supported Property Deprecated Determines the first parameter for the SurfaceType on the Bottom face of a part.
BottomParamA: float

Determines the first parameter for the SurfaceType on the Bottom face of a part.

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.

Roblox documentation

BottomParamB Supported Property Deprecated Determines the second parameter for the SurfaceType on the Bottom face of a part.
BottomParamB: float

Determines the second parameter for the SurfaceType on the Bottom face of a part.

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.

Roblox documentation

BottomSurface Supported Property Determines the type of surface for the bottom face of a part.
BottomSurface: SurfaceType

Determines the type of surface for the bottom face of a part.

The BottomSurface property determines the type of surface used for the negative Y direction of a part. When two parts' faces are placed next to each other, they may create a joint between them.

Roblox documentation

BottomSurfaceInput Supported Property Deprecated Determines the kind of input for the Bottom face of a part.
BottomSurfaceInput: InputType

Determines the kind of input for the Bottom face of a part.

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.

Roblox documentation

BrickColor Supported Property Determines the color of a part.
BrickColor: BrickColor

This property determines the color of a part. If the part has a Material, this also determines the color used when rendering the material texture. For more control over the color, the Color property can be used and this property will use the closest BrickColor.

Other visual properties of a part are determined by Transparency and Reflectance.

Roblox documentation

brickColor Supported Property Deprecated
brickColor: BrickColor

No description available.

Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

CanCollide Supported Property Determines whether a part may collide with other parts.
CanCollide: bool

Determines whether a part may collide with other parts.

CanCollide determines whether a part will physically interact with other parts. When disabled, other parts can pass through the part uninterrupted. Parts used for decoration usually have CanCollide disabled, as they need not be considered by the physics engine.

If a part is not Anchored and has CanCollide disabled, it may fall out of the world to be eventually destroyed by Workspace.FallenPartsDestroyHeight.

When CanCollide is disabled, parts may still fire the Touched event (as well the other parts touching them). You can disable this with CanTouch.

For more information on collisions, see Collisions.

Roblox documentation

CanQuery Supported Property Determines whether the part is considered during spatial query operations.
CanQuery: bool

Determines whether the part is considered during spatial query operations.

This property determines whether the part is considered during spatial query operations, such as GetPartBoundsInBox or Raycast. Note that CanCollide must be disabled for CanQuery to take effect, and spatial query functions will never include parts with CanQuery of 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.

Roblox documentation

CanTouch Supported Property Determines if Touched and TouchEnded events fire on the part.
CanTouch: bool

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.

Roblox documentation

CastShadow Supported Property Determines whether or not a part casts a shadow.
CastShadow: bool

Determines whether or not a part casts a shadow. Disabling this property for a given part can cause visual artifacts on the shadows cast upon that part.

This property is not designed for performance enhancement, but in complex scenes, strategically disabling it on certain parts can improve performance. Due to the possibility of visual artifacts, we recommend leaving it enabled on all parts in most situations.

Roblox documentation

CFrame Supported Property Determines the position and orientation of the BasePart in the world.
CFrame: CoordinateFrame

Determines the position and orientation of the BasePart in the world.

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 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.

Roblox reference signature
CFrame: CFrame

Roblox documentation

CollisionGroup Supported Property Describes the name of a part's collision group.
CollisionGroup: string

Describes the name of a part's collision group.

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.

Roblox documentation

CollisionGroupId Supported Property Deprecated Describes the automatically set ID number of a part's collision group.
CollisionGroupId: int

Describes the automatically set ID number of a part's collision group.

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 WorldRoot.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.

Roblox documentation

Color Supported Property Deprecated Determines the color of a part.
Color: Color3

The Color property determines the color of a part. If the part has a Material, this also determines the color used when rendering the material texture.

If this property is set, BrickColor will use the closest match to this Color value.

Other visual properties of a part are determined by Transparency and Reflectance.

Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

CustomPhysicalProperties Supported Property Determines several physical properties of a part.
CustomPhysicalProperties: PhysicalProperties

Determines several physical properties of a part.

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 Material of the part.

Roblox documentation

Elasticity Supported Property Deprecated Nova: still functional Legacy restitution value. Nova's physics uses it unless CustomPhysicalProperties overrides it.
Elasticity: float

Legacy restitution value. Nova's physics uses it unless CustomPhysicalProperties overrides it.

Modern Roblox discourages this property because elasticity normally comes from the part's material or CustomPhysicalProperties. Nova still stores and applies it through the part primitive; if custom physical properties are set, that takes precedence.

Nova behaviour: Still functional in Nova; prefer CustomPhysicalProperties for new work.

Roblox documentation

Friction Supported Property Deprecated Nova: still functional Legacy friction value. Nova's physics uses it unless CustomPhysicalProperties overrides it.
Friction: float

Legacy friction value. Nova's physics uses it unless CustomPhysicalProperties overrides it.

Modern Roblox discourages this property because friction normally comes from the part's material or CustomPhysicalProperties. Nova still stores and applies it through the part primitive; if a custom physical properties object is set, that takes precedence.

Nova behaviour: Still functional in Nova; prefer CustomPhysicalProperties for new work.

Roblox documentation

FrontParamA Supported Property Deprecated Determines the first parameter for the SurfaceType on the Front face of a part.
FrontParamA: float

Determines the first parameter for the SurfaceType on the Front face of a part.

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.

Roblox documentation

FrontParamB Supported Property Deprecated Determines the second parameter for the SurfaceType on the Front face of a part.
FrontParamB: float

Determines the second parameter for the SurfaceType on the Front face of a part.

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.

Roblox documentation

FrontSurface Supported Property Determines the type of surface for the front face of a part.
FrontSurface: SurfaceType

Determines the type of surface for the front face of a part.

The FrontSurface property determines the type of surface used for the negative Z direction of a part. When two parts' faces are placed next to each other, they may create a joint between them.

Roblox documentation

FrontSurfaceInput Supported Property Deprecated Determines the kind of input for the Front face of a part (-Z direction).
FrontSurfaceInput: InputType

Determines the kind of input for the Front face of a part (-Z direction).

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.

Roblox documentation

LeftParamA Supported Property Deprecated Determines the first parameter for the SurfaceType on the Left face of a part.
LeftParamA: float

Determines the first parameter for the SurfaceType on the Left face of a part.

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.

Roblox documentation

LeftParamB Supported Property Deprecated Determines the second parameter for the SurfaceType on the Left face of a part.
LeftParamB: float

Determines the second parameter for the SurfaceType on the Left face of a part.

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.

Roblox documentation

LeftSurface Supported Property Determines the type of surface for the left face of a part.
LeftSurface: SurfaceType

Determines the type of surface for the left face of a part.

The LeftSurface property determines the type of surface used for the negative X direction of a part. When two parts' faces are placed next to each other, they may create a joint between them.

Roblox documentation

LeftSurfaceInput Supported Property Deprecated Determines the kind of input for the Left face of a part.
LeftSurfaceInput: InputType

Determines the kind of input for the Left face of a part.

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.

Roblox documentation

LocalTransparencyModifier Supported Property Determines a multiplier for BasePart.Transparency that is only visible to the local client.
LocalTransparencyModifier: float

Determines a multiplier for BasePart.Transparency that is only visible to the local client.

The LocalTransparencyModifier property is a multiplier to 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.

1 - ((1 - Transparency) × (1 - LocalTransparencyModifier))

Class.BasePart.Transparency|Transparency LocalTransparencyModifier Server-Side Client-Side
0.5 0 0.5 0.5
0.5 0.25 0.5 0.625
0.5 0.5 0.5 0.75
0.5 0.75 0.5 0.875
0.5 1 0.5 1

Roblox documentation

Locked Supported Property Determines whether a part is selectable in Studio.
Locked: bool

Determines whether a part is selectable in Studio.

The Locked property determines whether a part (or a Model it is contained within) may be selected in 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 documentation

Massless Supported Property Determines whether the part contributes to the total mass or inertia of its rigid body.
Massless: bool

Determines whether the part contributes to the total mass or inertia of its rigid body.

If this property is enabled, the part 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.

Roblox documentation

Material Supported Property Determines the texture and default physical properties of a part.
Material: Material

Determines the texture and default physical properties of a part.

The Material property allows you to set a part's texture and default physical properties (in the case that CustomPhysicalProperties is unset). The default Plastic material has a very light texture, while 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 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 by applying a bit of reflectiveness (similar to Reflectance) and perspective distortion. The effect is especially pronounced on sphere-shaped parts. Semi‑transparent parts behind Glass parts are not visible.

Roblox documentation

Orientation Supported Property Describes the rotation of the part in the world.
Orientation: Vector3

Describes the rotation of the part in the world.

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's recommended that 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 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.

Roblox documentation

PivotOffset Supported Property Specifies the offset of the part's pivot from its CFrame.
PivotOffset: CoordinateFrame

This property specifies the offset of the part's pivot from its CFrame, that is BasePart.GetPivot() is the same as BasePart.CFrame multiplied by BasePart.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:

Roblox reference signature
PivotOffset: CFrame

Roblox documentation

Position Supported Property Describes the position of the part in the world.
Position: Vector3

Describes the position of the part in the world.

The Position property describes the coordinates of a part using a Vector3. It reflects the position of the part's 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 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.

Roblox documentation

ReceiveAge Supported Property Time since last recorded physics update.
ReceiveAge: float

Time since last recorded physics update.

Indicates the time in seconds since the part's physics were last updated on the local client or the server. This value will be 0 when the part has no physics (Anchored is true).

Roblox documentation

Reflectance Supported Property Determines how much a part reflects the skybox.
Reflectance: float

Determines how much a part reflects the skybox.

The Reflectance property determines how much a part reflects the sky. 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 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 Material of the part.

Roblox documentation

ResizeableFaces Supported Property Describes the faces on which a part may be resized.
ResizeableFaces: Faces

Describes the faces on which a part may be resized.

The ResizeableFaces property uses a Faces object to describe 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 Size dimensions of length 2.

This property is most commonly used with tools 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.

Roblox documentation

ResizeIncrement Supported Property Describes the smallest change in size allowable by the Resize() method.
ResizeIncrement: int

The ResizeIncrement property is a read-only property that describes the smallest change in size allowable by the Resize() method. It differs between implementations of the BasePart abstract class; for instance, Part has this set to 1 while TrussPart has this set to 2 since individual truss sections are 2×2×2 in size.

Roblox documentation

RightParamA Supported Property Deprecated Determines the first parameter for the SurfaceType on the Right face of a part.
RightParamA: float

Determines the first parameter for the SurfaceType on the Right face of a part.

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.

Roblox documentation

RightParamB Supported Property Deprecated Determines the second parameter for the SurfaceType on the Right face of a part.
RightParamB: float

Determines the second parameter for the SurfaceType on the Right face of a part.

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.

Roblox documentation

RightSurface Supported Property Determines the type of surface for the right face of a part.
RightSurface: SurfaceType

Determines the type of surface for the right face of a part.

The RightSurface property determines the type of surface used for the positive X direction of a part. When two parts' faces are placed next to each other, they may create a joint between them.

Roblox documentation

RightSurfaceInput Supported Property Deprecated Determines the kind of input for the Right face of a part (-X direction).
RightSurfaceInput: InputType

Determines the kind of input for the Right face of a part (-X direction).

The RightSurfaceInput property determines the kind of input provided to a

  • For Sin, the motor rotates at a velocity equal to ParamA * math.sin(workspace.DistributedGameTime * ParamB). See Workspace.DistributedGameTime.

Roblox documentation

RootPriority Supported Property The main rule in determining the root part of an assembly.
RootPriority: int

The main rule in determining the root part of an assembly.

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.

Roblox documentation

Rotation Supported Property The rotation of the part in degrees for the three axes.
Rotation: Vector3

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 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.

Roblox documentation

RotVelocity Supported Property Deprecated Determines a part's change in orientation over time.
RotVelocity: Vector3

Determines a part's change in orientation over time.

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.

Roblox documentation

Size Supported Property Determines the dimensions of a part (length, height, width).
Size: Vector3

Determines the dimensions of a part (length, height, width).

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, height, width) can be as low as 0.001 and as high as 2048. Size dimensions below 0.05 will be physically simulated as if the part's dimensions are 0.05, while visual rendering preserves the actual size.

A part's Size is used in a variety of additional ways:

Roblox documentation

SpecificGravity Supported Property Deprecated The ratio of the part's density to the density of water determined by the BasePart.Material.
SpecificGravity: float

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

Roblox documentation

TopParamA Supported Property Deprecated Determines the first parameter for the SurfaceType on the Top face of a part.
TopParamA: float

Determines the first parameter for the SurfaceType on the Top face of a part.

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.

Roblox documentation

TopParamB Supported Property Deprecated Determines the second parameter for the SurfaceType on the Top face of a part.
TopParamB: float

Determines the second parameter for the SurfaceType on the Top face of a part.

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.

Roblox documentation

TopSurface Supported Property Determines the type of surface for the top face of a part.
TopSurface: SurfaceType

Determines the type of surface for the top face of a part.

The TopSurface property determines the type of surface used for the positive Y direction of a part. When two parts' faces are placed next to each other, they may create a joint between them.

Roblox documentation

TopSurfaceInput Supported Property Deprecated Determines the kind of input for the Top face of a part (+Y direction).
TopSurfaceInput: InputType

Determines the kind of input for the Top face of a part (+Y direction).

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.

Roblox documentation

Transparency Supported Property Determines how much a part can be seen through (the inverse of part opacity).
Transparency: float

Determines how much a part can be seen through (the inverse of part opacity).

The Transparency property controls the visibility of a part on a scale of 0 to 1 where 0 is completely visible (opaque) and 1 is completely invisible (not rendered at all).

While fully transparent parts are not rendered at all, partially transparent objects have some significant rendering costs. Having many translucent parts may impact performance.

When transparent parts overlap, render order may act unpredictably, so you should avoid semi-transparent parts from overlapping.

See also LocalTransparencyModifier as a multiplier to Transparency that's only visible to the local client.

Roblox documentation

Velocity Supported Property Deprecated Determines a part's change in position over time.
Velocity: Vector3

Determines a part's change in position over time.

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).

Roblox documentation

Methods

BreakJoints Supported Function Deprecated Breaks any surface connection with any adjacent part, including Weld and other JointInstance.
BasePart:BreakJoints()

Breaks any surface connection with any adjacent part, including Weld and other JointInstance.

Roblox reference signature
BasePart:BreakJoints(): null

Roblox documentation

breakJoints Supported Function Deprecated
BasePart:breakJoints()

No description available.

Roblox reference signature
BasePart:breakJoints(): null
Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

CanSetNetworkOwnership Supported Function Checks whether you can set a part's network ownership.
BasePart:CanSetNetworkOwnership(): Tuple

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.

Roblox documentation

GetConnectedParts Supported Function Returns a table of parts connected to the object by any kind of rigid joint.
BasePart:GetConnectedParts(bool recursive = false): Objects

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:

Roblox reference signature
BasePart:GetConnectedParts(recursive: bool = false): Instances

Roblox documentation

GetMass Supported Function Returns the value of the Mass property.
BasePart:GetMass(): float

Returns the value of the Mass property.

GetMass returns the value of the read-only Mass property.

This function predates the Mass property. It remains supported for backward-compatibility; you should use the Mass property directly.

Roblox documentation

getMass Supported Function Deprecated Use GetMass() instead
BasePart:getMass(): float

Use GetMass() instead

Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

GetNetworkOwner Supported Function Returns the current player who is the network owner of this part, or nil in case of the server.
BasePart:GetNetworkOwner(): Instance

Returns the current player who is the network owner of this part, or nil in case of the server.

Roblox documentation

GetNetworkOwnershipAuto Supported Function Returns true if the game engine automatically decides the network owner for this part.
BasePart:GetNetworkOwnershipAuto(): bool

Returns true if the game engine automatically decides the network owner for this part.

Roblox documentation

GetRenderCFrame Supported Function Deprecated Nova: still functional Returns the CFrame used for rendering the part.
BasePart:GetRenderCFrame(): CoordinateFrame

Returns the CFrame used for rendering the part.

Nova still implements this as the rendering coordinate frame. Modern Roblox may call it obsolete because interpolation moved into the DataModel, but the method remains callable and meaningful in Nova.

Roblox reference signature
BasePart:GetRenderCFrame(): CFrame
Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

GetRootPart Supported Function Deprecated Returns the base part of an assembly of parts.
BasePart:GetRootPart(): Instance

Returns the base part of an assembly of parts.

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.

Roblox documentation

GetTouchingParts Supported Function Returns a table of all BasePart.CanCollide true parts that intersect with this part.
BasePart:GetTouchingParts(): Objects

Returns a table of all BasePart.CanCollide true parts that intersect with this part.

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.

Roblox reference signature
BasePart:GetTouchingParts(): Instances

Roblox documentation

IsGrounded Supported Function Returns true if the object is connected to a part that will hold it in place (eg an Anchored part), otherwise returns false.
BasePart:IsGrounded(): bool

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.

Roblox documentation

MakeJoints Supported Function Deprecated Creates a joint on any side of the object that has a surface ID that can make a joint.
BasePart:MakeJoints()

Creates a joint on any side of the object that has a surface ID that can make a joint.

Creates a joint on any side of the Part that has a SurfaceType that can make a joint it will create a joint with any adjacent parts.

Joints will be created between the sides and any planar touching surfaces, depending on the sides' surfaces.

  • Smooth surfaces will not create joints
  • Glue surfaces will create a Glue joint
  • 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.

Roblox reference signature
BasePart:MakeJoints(): null

Roblox documentation

makeJoints Supported Function Deprecated Use MakeJoints() instead
BasePart:makeJoints()

Use MakeJoints() instead

Roblox reference signature
BasePart:makeJoints(): null
Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

Resize Supported Function Changes the size of an object just like using the Studio resize tool.
BasePart:Resize(NormalId normalId, int deltaAmount): bool

Changes the size of an object just like using the Studio resize tool.

Roblox reference signature
BasePart:Resize(normalId: NormalId, deltaAmount: int): bool

Roblox documentation

resize Supported Function Deprecated
BasePart:resize(NormalId normalId, int deltaAmount): bool

No description available.

Roblox reference signature
BasePart:resize(normalId: NormalId, deltaAmount: int): bool
Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

SetNetworkOwner Supported Function Sets the given player as network owner for this and all connected parts.
BasePart:SetNetworkOwner(Instance playerInstance = nil)

Sets the given player as network owner for this and all connected parts. When playerInstance is nil, the server will be the owner instead of a player.

Roblox reference signature
BasePart:SetNetworkOwner(playerInstance: Player = nil): null

Roblox documentation

SetNetworkOwnershipAuto Supported Function Lets the game engine dynamically decide who will handle the part's physics (one of the clients or the server).
BasePart:SetNetworkOwnershipAuto()

Lets the game engine dynamically decide who will handle the part's physics (one of the clients or the server).

Roblox reference signature
BasePart:SetNetworkOwnershipAuto(): null

Roblox documentation

Events

LocalSimulationTouched Supported Event Deprecated Fires on the local client when another part comes in contact with this part.
LocalSimulationTouched(Instance part)

Fires on the local client when another part comes in contact with this part.

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.

Roblox reference signature
LocalSimulationTouched(part: BasePart)
Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

OutfitChanged Supported Event Deprecated Fires when the part's appearance changes due to a Shirt.
OutfitChanged()

Fires when the part's appearance changes due to a Shirt.

Fired if the part's appearance is affected by the Shirt class.

Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

StoppedTouching Supported Event Deprecated Nova: still functional Fires on the local client when this part stops touching another part.
StoppedTouching(Instance otherPart)

Fires on the local client when this part stops touching another part.

Nova still raises the deprecated local signal from the workspace collision path. It is the client-only counterpart of TouchEnded.

Roblox reference signature
StoppedTouching(otherPart: BasePart)
Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

Touched Supported Event Fires when a part touches another part as a result of physical movement.
Touched(Instance otherPart)

Fires when a part touches another part as a result of physical movement.

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.

This event works in conjunction with Workspace.TouchesUseCollisionGroups to specify whether collision groups are acknowledged for detection.

Roblox reference signature
Touched(otherPart: BasePart)

Roblox documentation

touched Supported Event Deprecated
touched(Instance otherPart)

No description available.

Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

TouchEnded Supported Event Fires when a part stops touching another part as a result of physical movement.
TouchEnded(Instance otherPart)

Fires when a part stops touching another part as a result of physical movement.

Fires when a part stops touching another part under similar conditions to those of BasePart.Touched.

This event works in conjunction with Workspace.TouchesUseCollisionGroups to specify whether collision groups are acknowledged for detection.

Roblox reference signature
TouchEnded(otherPart: BasePart)

Roblox documentation

Inherited members

Inherited from PVInstance: 9 properties, 36 methods, 7 events. They are documented on the base class page.

28 modern Roblox member(s) are not implemented yet — expand to inspect

Members declared by Roblox's BasePart class (or by a missing base class) that Nova does not expose. Use this list to scope a migration; the compatibility guide has the recommended workaround.

Properties

Member Signature Status Notes Flags
AssemblyAngularVelocity AssemblyAngularVelocity: Vector3 Not yet The angular velocity of the part's assembly. NotReplicated
AssemblyCenterOfMass AssemblyCenterOfMass: Vector3 Not yet The center of mass of the part's assembly in world space. ReadOnly, NotReplicated
AssemblyLinearVelocity AssemblyLinearVelocity: Vector3 Not yet The linear velocity of the part's assembly. NotReplicated
AssemblyMass AssemblyMass: float Not yet The total mass of the part's assembly. ReadOnly, NotReplicated
AssemblyRootPart AssemblyRootPart: BasePart Not yet A reference to the root part of the assembly. ReadOnly, NotReplicated
AudioCanCollide AudioCanCollide: bool Not yet Determines whether the part will physically interact with audio simulation, similar to CastShadow for lighting. —
CenterOfMass CenterOfMass: Vector3 Not yet Describes the local position of a part's center of mass, relative to its CFrame. ReadOnly, NotReplicated
CurrentPhysicalProperties CurrentPhysicalProperties: PhysicalProperties Not yet Indicates the current physical properties of the part. ReadOnly, NotReplicated
EnableFluidForces EnableFluidForces: bool Not yet Used to enable or disable aerodynamic forces on parts and assemblies. —
ExtentsCFrame ExtentsCFrame: CFrame Not yet The CFrame of the physical extents of the BasePart. ReadOnly, NotReplicated
ExtentsSize ExtentsSize: Vector3 Not yet The actual physical size of the BasePart as regarded by the physics engine. ReadOnly, NotReplicated
Mass Mass: float Not yet Describes the mass of the part, the product of its density and volume. ReadOnly, NotReplicated
MaterialVariant MaterialVariant: string Not yet The name of MaterialVariant. NotReplicated

Methods

Member Signature Status Notes Flags
AngularAccelerationToTorque BasePart:AngularAccelerationToTorque(angAcceleration: Vector3, angVelocity: Vector3 = 0, 0, 0): Vector3 Not yet Returns the torque needed to achieve a given angular acceleration on this part's assembly, optionally accounting for gyroscopic effects. —
ApplyAngularImpulse BasePart:ApplyAngularImpulse(impulse: Vector3): null Not yet Apply an angular impulse to the assembly. —
ApplyImpulse BasePart:ApplyImpulse(impulse: Vector3): null Not yet Apply an impulse to the assembly at the assembly's Class.BasePart.AssemblyCenterOfMass\|center of mass. —
ApplyImpulseAtPosition BasePart:ApplyImpulseAtPosition(impulse: Vector3, position: Vector3): null Not yet Apply an impulse to the assembly at specified position. —
BindToCollisionSummaries BasePart:BindToCollisionSummaries(callback: Function): RBXScriptConnection Not yet Subscribes to detailed per-frame contact data for the collisions this part is involved in. —
CanCollideWith BasePart:CanCollideWith(part: BasePart): bool Not yet Returns whether the parts can collide with each other. —
GetClosestPointOnSurface BasePart:GetClosestPointOnSurface(position: Vector3): Vector3 Not yet Returns the closest point on the part's surface to the given point. —
GetJoints BasePart:GetJoints(): Instances Not yet Returns all Joints or Constraints connected to this part that are active in the simulation. —
GetNoCollisionConstraints BasePart:GetNoCollisionConstraints(): Instances Not yet Returns the enabled NoCollisionConstraint objects currently registered for this part in its physics world. —
GetPhysicsCost BasePart:GetPhysicsCost(): float Not yet — RobloxScriptSecurity
GetVelocityAtPosition BasePart:GetVelocityAtPosition(position: Vector3): Vector3 Not yet Returns the linear velocity of the part's assembly at the given position relative to this part. —
IntersectAsync BasePart:IntersectAsync(parts: Instances, collisionfidelity: CollisionFidelity = Default, renderFidelity: RenderFidelity = Automatic): Instance Not yet Creates a new IntersectOperation from the overlapping geometry of the part and the other parts in the given array. Yields
SubtractAsync BasePart:SubtractAsync(parts: Instances, collisionfidelity: CollisionFidelity = Default, renderFidelity: RenderFidelity = Automatic): Instance Not yet Creates a new UnionOperation from the part, minus the geometry occupied by the parts in the given array. Yields
TorqueToAngularAcceleration BasePart:TorqueToAngularAcceleration(torque: Vector3, angVelocity: Vector3 = 0, 0, 0): Vector3 Not yet Returns the angular acceleration that would result from applying a given torque to this part's assembly, optionally accounting for gyroscopic effects. —
UnionAsync BasePart:UnionAsync(parts: Instances, collisionfidelity: CollisionFidelity = Default, renderFidelity: RenderFidelity = Automatic): Instance Not yet Creates a new UnionOperation from the part, plus the geometry occupied by the parts in the given array. Yields

Roblox reference: BasePart

Generated from Nova's API dump and Roblox creator-docs. Nova-only members come from the engine's reflection metadata.