# LineForce

Show deprecated

A LineForce is used to apply a force along a line between two points. As the end points of the line move, the direction of the force will change accordingly.

## Direction of force

The direction that a LineForce applies its force in is determined by its `Attachment|attachments` and `LineForce/ApplyAtCenterOfMass` properties. When ApplyAtCenter of mass is false, which it is by default, the direction of the force will be from the location of `Constraint/Attachment0|Attachment0` to the location of `Constraint/Attachment1|Attachment1`. If ApplyToCenter is false, then the direction will be from the center of mass of Attachment0’s parent to the location of Attachment1. Note that if the parent of Attachment0 is rigidly connected to other parts, then the LineForce will use the center of mass of all of the parts to determine the origin of the direction.

## Location of force

A LineForce will apply its force on the Parent of its Attachment0, but the location where the force is applied is determined by the LineForce’s ApplyAtCenterOfMass property.

When ApplyAtCenterOfMass is false, which it is by default, the force will be applied to the part at the Attachement0’s location. This means that if the attachment is not at the center of the part, it can create a torque on the part.

When ApplyAtCenterOfMass is set to true, the force will check if any other parts are rigidly connected to the parent part of its Attachment0. If there are, then the force will apply at the center of mass of all of the connected parts. If there are no rigid connections to other parts, the force will simply be applied at the center of mass of the part.

## Strength of Force

The strength of the force applied by a LineForce is determined by the `LineForce/Magnitude` and `LineForce/InverseSquareLaw` properties. The InverseSquareLaw property determines whether the force is constant or not.

When InverseSquareLaw is false, which is is by default, the force applied is constant, and its magnitude is equal to the magnitude defined by the Magnitude property.

When InverseSquareLaw is true, then the force will scale based on how much distance there is between the two endpoints. When the distance is 1 stud, then the force’s magnitude will be the value of the Magnitude property. If the two points are further away, the force will decrease. Conversely, the force will increase if the two points move closer together. This function can be used to determine the force at any given separation:

``````ActualMagnitude = Magnitude / (Separation ^ 2)
``````

## Properties

 ``` bool ``` ``` ApplyAtCenterOfMass ``` When set to false, the force will be applied to the part at the Attachment0’s location. This means that if the attachment is not at the center of the part, it can create a torque on the part
 ``` bool ``` ``` InverseSquareLaw ``` When true, the force magnitude is multiplied by the inverse square of the distance.
 ``` float ``` ``` Magnitude ``` The magnitude of the force.
 ``` float ``` ``` MaxForce ``` Maximum absolute force that can be applied.
 ``` bool ``` ``` ReactionForceEnabled ``` Enables an equal and opposite reaction force on the parent of Attachment1.

Inherited from Constraint:

 ``` bool ``` ``` Active ``` ``` [ReadOnly] ``` ``` [NotReplicated] ``` Indicates if the constraint is currently active in the world
 ``` Attachment ``` ``` Attachment0 ``` The `Attachment` that is connected to `Constraint/Attachment1`
 ``` Attachment ``` ``` Attachment1 ``` The `Attachment` that is connected to `Constraint/Attachment0`
 ``` BrickColor ``` ``` Color ``` The color of the constraint.
 ``` bool ``` ``` Enabled ``` Toggles whether or not this Constraint is enabled.
 ``` bool ``` ``` Visible ``` Toggles the visibility of this Constraint.

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] ```