# 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

Inherited from Instance:

 ``` int``` ``` DataCost ``` ``` [ReadOnly] ``` ``` [NotReplicated] ``` The cost of saving the instance using data persistence.
 ``` Instance``` ``` Parent ``` Determines the hierarchical parent of the `Instance`.
 ``` bool``` ``` RobloxLocked ``` If true, the `Instance` and its descendants cannot be indexed or edited by a `Script` or `LocalScript` and will throw an error if it is attempted.
 ``` string``` ``` ClassName ``` ``` [ReadOnly] ``` ``` [NotReplicated] ``` A read-only string representing the class this `Instance` belongs to.
 ``` string``` ``` Name ``` A non-unique identifier of the `Instance`.
 ``` bool``` ``` Archivable ``` Determines if an `Instance` can be cloned using `/Instance/Clone` or saved to file.

## Functions

Inherited from Instance:

 ``` Instance``` ``` FindFirstChild ( string name , bool recursive ) ``` Returns the first child of the `Instance` found with the given name.
 ``` Array``` ``` GetDescendants ( ) ``` ``` [CustomLuaState] ``` Returns an array containing all of the descendants of the instance
 ``` Objects``` ``` GetChildren ( ) ``` Returns an array containing all of the `Instance`'s children.
 ``` void``` ``` Destroy ( ) ``` Sets the `Instance/Parent` property to nil, locks the `Instance/Parent` property, disconnects all connections and calls Destroy on all children.
 ``` RBXScriptSignal``` ``` GetPropertyChangedSignal ( string property ) ``` Get an event that fires when a given property of an object changes.
 ``` string``` ``` GetFullName ( ) ``` Returns a string describing the `Instance`'s ancestry.
 ``` Instance``` ``` FindFirstChildWhichIsA ( string className , bool recursive ) ``` Returns the first child of the `Instance` for whom `Instance/IsA` returns true for the given className.
 ``` 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.
 ``` Instance``` ``` FindFirstChildOfClass ( string className ) ``` Returns the first child of the `Instance` whose `Instance/ClassName|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``` ``` FindFirstAncestorOfClass ( string className ) ``` Returns the first ancestor of the `Instance` whose `Instance/ClassName` is equal to the given className.
 ``` Instance``` ``` FindFirstAncestor ( string name ) ``` Returns the first ancestor of the `Instance` whose `Instance/Name` is equal to the given name.
 ``` bool``` ``` IsA ( string className ) ``` Returns true if an `Instance`'s class matches or inherits from a given class
 ``` 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.
 ``` string``` ``` GetDebugId ( int scopeLength ) ``` ``` [NotBrowsable] ``` Returns a coded string of the `Instance`s DebugId used internally by Roblox.
 ``` Instance``` ``` Clone ( ) ``` Create a deep copy of a Roblox instance and descendants where `Archivable = true`.
 ``` void``` ``` ClearAllChildren ( ) ``` This function destroys all of an `Instance`'s children.

## Events

Inherited from Instance:

 ``` RBXScriptSignal``` ``` DescendantRemoving ( Instance descendant ) ``` Fires immediately before a descendant of the `Instance` is removed.
 ``` RBXScriptSignal``` ``` AncestryChanged ( Instance child , Instance parent ) ``` Fires when the `Instance/Parent` property of the object or one of its ancestors is changed.
 ``` 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``` ``` Changed ( string property ) ``` Fired immediately after a property of an object changes.