# SpringConstraint

A SpringConstraint applies a force to its Attachments based on spring and damper behavior. This constraint, along with a CylindricalConstraint, is ideal for building vehicle suspension.

Note that if this constraint attaches one part (A) to another part (B) that is anchored or connected to an anchored part (Z), part A will not be locally simulated when interacting with a player.

When configuring this constraint, it may be helpful to study Roblox Units to understand how Roblox units compare to metric units.

#### Free Length

FreeLength defines the natural resting length of the spring. If the attachments are further apart than the free length, they are forced together; if the attachments are closer together than the free length, they are forced apart.

#### Damping

The Damping value controls how fast the spring's oscillation dies down. A value of 0 allows the spring to oscillate endlessly, while higher values bring the spring to a rest more quickly.

#### Stiffness

Stiffness sets the strength of the spring. Higher values create a spring that responds with more force when its attachments are closer together or further apart than FreeLength.

#### Limits

Enabling the LimitsEnabled property exposes the MinLength and MaxLength values for setting the minimum and maximum length of the spring. If the spring's attachments reach these limits, they stop moving apart from one another without restitution.

## Summary

### Properties

The number of coils visualized on the SpringConstraint.

- read onlynot replicatedread parallel
The current distance between the constraint's Attachments.

Damping constant for the SpringConstraint. Multiplied to the velocity of the constraint's Attachments to reduce the spring force applied.

- read parallel
Natural resting length of the spring.

- read parallel
Sets whether the SpringConstraint enforces a minimum and maximum length.

The maximum force the SpringConstraint can apply on its Attachments.

The maximum separation the SpringConstraint will allow if LimitsEnabled is true.

The minimum separation the SpringConstraint will allow if LimitsEnabled is true.

The visualized radius of the spring's coils.

The strength of the spring. The higher this value the more force will be applied when the attachments are separated a different length than the FreeLength.

The visualized thickness of the spring's coils.

Indicates if the constraint is currently active in the world.

- read parallel
The Attachment that is connected to Constraint.Attachment1.

- read parallel
The Attachment that is connected to Constraint.Attachment0.

- read parallel
The color of the constraint.

Toggles whether or not the constraint is enabled.

Toggles the constraint's visibility.

## Properties

### Coils

The number of coils visualized on the SpringConstraint. This can only be set between 0 and 8.

### CurrentLength

The current distance between the constraint's Attachments.

### Damping

Damping constant for the SpringConstraint. Multiplied to the velocity of the constraint's Attachments to reduce the spring force applied.

### LimitsEnabled

Sets whether the SpringConstraint enforces a minimum and maximum length. If the constraint's Attachments reach these limits, they will simply stop moving apart from one another without restitution. If you need restitution or elasticity at the ends of the range of motion, you can combine a SpringConstraint with another constraint that allows restitution at the end of its range, such as a PrismaticConstraint or RopeConstraint.

### MaxForce

The maximum force the SpringConstraint can apply on its Attachments. Some spring systems can give rise to forces that grow fast leading to instability. In such cases it is recommended to set MaxForce to a reasonable value.

### MaxLength

The maximum separation the SpringConstraint will allow if LimitsEnabled is true.

### MinLength

The minimum separation the SpringConstraint will allow if LimitsEnabled is true.

### Stiffness

The strength of the spring. The higher this value the more force will be applied when the attachments are separated a different length than the FreeLength.