Skip to main content

Class SpringUtils

A utility class that provides helper methods and configuration types for simulating damped spring motion.

public static class SpringUtils

Inheritance​

object→SpringUtils

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​

NameTypeDescription
pOutParamsSpringUtils.tDampedSpringMotionParamsThe output structure that will hold the calculated spring motion parameters.
deltaTimefloatThe time step used in the simulation.
configSpringUtils.SpringConfigThe 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​

NameTypeDescription
pOutParamsSpringUtils.tDampedSpringMotionParamsThe output structure that will hold the calculated spring motion parameters.
deltaTimefloatThe time step used in the simulation.
angularFrequencyfloatThe angular frequency of motion.
dampingRatiofloatThe 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​

NameTypeDescription
pPosfloatposition value to update
pVelfloatvelocity value to update
equilibriumPosfloatposition to approach
springParamsSpringUtils.tDampedSpringMotionParamsmotion parameters to use
  • Examples
  • Methods
    • CalcDampedSpringMotionParams(ref tDampedSpringMotionParams, float, SpringConfig)
    • CalcDampedSpringMotionParams(ref tDampedSpringMotionParams, float, float, float)
    • UpdateDampedSpringMotion(ref float, ref float, float, in tDampedSpringMotionParams)