# BodyForce

Show deprecated

The BodyForce object applies (or exerts) a force on the part to which it is parented. If the magnitude of such a force is great enough, parts can begin to accelerate. See Newton’s First Law of Motion. The force is determined by the `BodyForce/Force` property, and is defined on the three world axes.

A BodyForce alone cannot apply a torque (it cannot cause the parent to rotate on its own). To apply a force at a specific point (e.g. to apply torque for angular acceleration) or apply forces relative to the orientation of the part, use a `BodyThrust` instead.

## Forces Relative to Parent

Using the `CFrame:vectorToWorldSpace(Vector3)` method, it is possible to translate a force vector that is relative to the part into the world vector necessary for `BodyForce/Force|Force`. For example, to apply a force to the left an object (no matter which way it’s facing), try:

``````magnitude = 100
left = Vector3.new(-1, 0, 0) * magnitude -- You could also use Vector3.FromNormalId(Enum.NormalId.Left)
bodyForce.Force = bodyForce.Parent.CFrame:vectorToWorldSpace(left)
``````

You can also use a `BodyThrust` with a `BodyThrust/Location|Location` of `(0, 0, 0)`, then set the `BodyThrust/Force|Force` for the same effect.

## Anti-gravity

BodyForce is commonly used to counteract the effects of `Workspace/Gravity|Gravity` on a per-part basis by simply applying a force in the +Y direction. See the code samples for more information.

## Properties

 ``` Vector3 ``` ``` Force ``` Determines the force exerted on each axis
 ``` Vector3 ``` ``` force ``` ``` [NotReplicated] ``` ``` [Deprecated] ``` Determines the amount of force applied on each axis

Inherited from Instance:

 ``` bool ``` ``` Archivable ``` Determines if an `Instance` can be cloned using `/Instance/Clone` or saved to file.
 ``` string ``` ``` ClassName ``` ``` [ReadOnly] ``` ``` [NotReplicated] ``` A read-only string representing the class this `Instance` belongs to
 ``` int ``` ``` DataCost ``` ``` [ReadOnly] ``` ``` [NotReplicated] ``` ``` [Deprecated] ``` The cost of saving the instance using data persistence.
 ``` string ``` ``` Name ``` A non-unique identifier of the `Instance`
 ``` Instance ``` ``` Parent ``` Determines the hierarchical parent of the `Instance`
 ``` bool ``` ``` RobloxLocked ``` ``` [Deprecated] ``` A deprecated property that used to protect `CoreGui` objects
 ``` bool ``` ``` archivable ``` ``` [Hidden] ``` ``` [NotReplicated] ``` ``` [Deprecated] ```
 ``` string ``` ``` className ``` ``` [ReadOnly] ``` ``` [NotReplicated] ``` ``` [Deprecated] ```

## Functions

Inherited from Instance:

 ``` void ``` ``` ClearAllChildren ( ) ``` This function destroys all of an `Instance`'s children.
 ``` Instance ``` ``` Clone ( ) ``` Create a deep copy of a Roblox instance and descendants where `Archivable = true`.
 ``` void ``` ``` Destroy ( ) ``` Sets the `Instance/Parent` property to nil, locks the `Instance/Parent` property, disconnects all connections and calls Destroy on all children.
 ``` Instance ``` ``` FindFirstAncestor ( string name ) ``` Returns the first ancestor of the `Instance` whose `Instance/Name` is equal to the given name.
 ``` Instance ``` ``` FindFirstAncestorOfClass ( string className ) ``` Returns the first ancestor of the `Instance` whose `Instance/ClassName` is equal to the given className.
 ``` Instance ``` ``` FindFirstAncestorWhichIsA ( string className ) ``` Returns the first ancestor of the `Instance` for whom `Instance/IsA` returns true for the given className.
 ``` Instance ``` ``` FindFirstChild ( string name , bool recursive ) ``` Returns the first child of the `Instance` found with the given name.
 ``` Instance ``` ``` FindFirstChildOfClass ( string className ) ``` Returns the first child of the `Instance` whose `Instance/ClassName|ClassName` is equal to the given className.
 ``` Instance ``` ``` FindFirstChildWhichIsA ( string className , bool recursive ) ``` Returns the first child of the `Instance` for whom `Instance/IsA` returns true for the given className.
 ``` Variant ``` ``` GetAttribute ( string attribute ) ```
 ``` RBXScriptSignal ``` ``` GetAttributeChangedSignal ( string attribute ) ```
 ``` Dictionary ``` ``` GetAttributes ( ) ```
 ``` Objects ``` ``` GetChildren ( ) ``` Returns an array containing all of the `Instance`'s children.
 ``` string ``` ``` GetDebugId ( int scopeLength ) ``` ``` [NotBrowsable] ``` Returns a coded string of the `Instance`s DebugId used internally by Roblox.
 ``` Array ``` ``` GetDescendants ( ) ``` ``` [CustomLuaState] ``` Returns an array containing all of the descendants of the instance
 ``` string ``` ``` GetFullName ( ) ``` Returns a string describing the `Instance`'s ancestry.
 ``` RBXScriptSignal ``` ``` GetPropertyChangedSignal ( string property ) ``` Get an event that fires when a given property of an object changes.
 ``` bool ``` ``` IsA ( string className ) ``` ``` [CustomLuaState] ``` Returns true if an `Instance`'s class matches or inherits from a given class
 ``` bool ``` ``` IsAncestorOf ( Instance descendant ) ``` Returns true if an `Instance` is an ancestor of the given descendant.
 ``` bool ``` ``` IsDescendantOf ( Instance ancestor ) ``` Returns true if an `Instance` is a descendant of the given ancestor.
 ``` void ``` ``` Remove ( ) ``` ``` [Deprecated] ``` Sets the object’s Parent to nil, and does the same for all its descendants.
 ``` void ``` ``` SetAttribute ( string attribute , Variant value ) ```
 ``` Instance ``` ``` WaitForChild ( string childName , double timeOut ) ``` ``` [CustomLuaState] ``` ``` [CanYield] ``` Returns the child of the `Instance` with the given name. If the child does not exist, it will yield the current thread until it does.
 ``` Objects ``` ``` children ( ) ``` ``` [Deprecated] ``` Returns an array of the object’s children.
 ``` Instance ``` ``` clone ( ) ``` ``` [Deprecated] ```
 ``` void ``` ``` destroy ( ) ``` ``` [Deprecated] ```
 ``` Instance ``` ``` findFirstChild ( string name , bool recursive ) ``` ``` [Deprecated] ```
 ``` Objects ``` ``` getChildren ( ) ``` ``` [Deprecated] ```
 ``` bool ``` ``` isA ( string className ) ``` ``` [Deprecated] ``` ``` [CustomLuaState] ```
 ``` bool ``` ``` isDescendantOf ( Instance ancestor ) ``` ``` [Deprecated] ```
 ``` void ``` ``` remove ( ) ``` ``` [Deprecated] ```

## Events

Inherited from Instance:

 ``` RBXScriptSignal ``` ``` AncestryChanged ( Instance child , Instance parent ) ``` Fires when the `Instance/Parent` property of the object or one of its ancestors is changed.
 ``` RBXScriptSignal ``` ``` AttributeChanged ( string attribute ) ```
 ``` RBXScriptSignal ``` ``` Changed ( string property ) ``` ``` [DetectingPropertyChanges] ``` Fired immediately after a property of an object changes.
 ``` RBXScriptSignal ``` ``` ChildAdded ( Instance child ) ``` Fires when an object is parented to this `Instance`.
 ``` RBXScriptSignal ``` ``` ChildRemoved ( Instance child ) ``` Fires when a child is removed from this `Instance`.
 ``` RBXScriptSignal ``` ``` DescendantAdded ( Instance descendant ) ``` Fires when a descendant is added to the `Instance`
 ``` RBXScriptSignal ``` ``` DescendantRemoving ( Instance descendant ) ``` Fires immediately before a descendant of the `Instance` is removed.
 ``` RBXScriptSignal ``` ``` childAdded ( Instance child ) ``` ``` [Deprecated] ```

## Code Samples

### Lunar Gravity

This code sample demonstrates how a BodyForce can be used to counteract the force of gravity by providing a force in the opposite direction (upward).