Class SpringUtils
A utility class that provides helper methods and configuration types for simulating damped spring motion.
public static class SpringUtils
Inheritance
Examples
This example demonstrates how to use CalcDampedSpringMotionParams and UpdateDampedSpringMotion
to simulate a spring-like scaling effect on a GameObject:
public class SpringImplementationFloat : MonoBehaviour
{
[SerializeField]
private SpringUtils.SpringConfig springConfig;
private SpringUtils.tDampedSpringMotionParams springParams;
public float targetPos;
public float currentPos;
float vel;
private void Awake()
{
currentPos = transform.localScale.x;
springParams = new SpringUtils.tDampedSpringMotionParams();
}
private void Update()
{
SpringUtils.CalcDampedSpringMotionParams(ref springParams, Time.deltaTime, springConfig);
SpringUtils.UpdateDampedSpringMotion(ref currentPos, ref vel, targetPos, in springParams);
transform.localScale = new Vector3(currentPos, currentPos, currentPos);
}
}
Methods
CalcDampedSpringMotionParams(ref tDampedSpringMotionParams, float, SpringConfig)
Computes the parameters needed to simulate a damped spring over a given period of time.
public static void CalcDampedSpringMotionParams(ref SpringUtils.tDampedSpringMotionParams pOutParams, float deltaTime, SpringUtils.SpringConfig config)
Parameters
| Name | Type | Description |
|---|---|---|
pOutParams | SpringUtils.tDampedSpringMotionParams | The output structure that will hold the calculated spring motion parameters. |
deltaTime | float | The time step used in the simulation. |
config | SpringUtils.SpringConfig | The SpringConfig containing the angular frequency and damping ratio values. |
Examples
SpringUtils.tDampedSpringMotionParams motionParams = new();
SpringUtils.SpringConfig config = new SpringUtils.SpringConfig(15f, 0.5f);
SpringUtils.CalcDampedSpringMotionParams(ref motionParams, Time.deltaTime, config);
Remarks
This method uses the angular frequency and damping ratio to define the behavior of the spring system:
Damping Ratio > 1: Overdamped – the system returns to equilibrium slowly without oscillating.Damping Ratio = 1: Critically damped – the system returns to equilibrium as quickly as possible without oscillating.Damping Ratio < 1: Underdamped – the system oscillates while gradually returning to equilibrium.
The angular frequency controls how quickly the spring oscillates.
CalcDampedSpringMotionParams(ref tDampedSpringMotionParams, float, float, float)
Computes the parameters needed to simulate a damped spring over a given period of time.
public static void CalcDampedSpringMotionParams(ref SpringUtils.tDampedSpringMotionParams pOutParams, float deltaTime, float angularFrequency, float dampingRatio)
Parameters
| Name | Type | Description |
|---|---|---|
pOutParams | SpringUtils.tDampedSpringMotionParams | The output structure that will hold the calculated spring motion parameters. |
deltaTime | float | The time step used in the simulation. |
angularFrequency | float | The angular frequency of motion. |
dampingRatio | float | The damping ratio of motion. |
Remarks
This method uses the angular frequency and damping ratio to define the behavior of the spring system:
Damping Ratio > 1: Overdamped – the system returns to equilibrium slowly without oscillating.Damping Ratio = 1: Critically damped – the system returns to equilibrium as quickly as possible without oscillating.Damping Ratio < 1: Underdamped – the system oscillates while gradually returning to equilibrium.
The angular frequency controls how quickly the spring oscillates.
UpdateDampedSpringMotion(ref float, ref float, float, in tDampedSpringMotionParams)
Update the supplied position and velocity values over time according to the motion parameters.
public static void UpdateDampedSpringMotion(ref float pPos, ref float pVel, float equilibriumPos, in SpringUtils.tDampedSpringMotionParams springParams)
Parameters
| Name | Type | Description |
|---|---|---|
pPos | float | position value to update |
pVel | float | velocity value to update |
equilibriumPos | float | position to approach |
springParams | SpringUtils.tDampedSpringMotionParams | motion parameters to use |