Skip to content

thammin/unity-spring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

6bf3aed · Dec 8, 2021

History

21 Commits
Jan 15, 2020
Sep 30, 2019
Sep 30, 2019
Jan 15, 2020
Sep 25, 2019
Sep 25, 2019
Sep 25, 2019
Dec 8, 2021
Sep 25, 2019
Sep 25, 2019
Sep 25, 2019
Sep 25, 2019
Sep 25, 2019

Repository files navigation

A minimal spring physics library for Unity

Implement multiple solvers for damped harmonic oscillator.

Solvers:

Maybe not:

Performance rough check with 2.6 GHz Intel Core i7:

Install

via Package Manager UI

ssh://git@github.com/thammin/unity-spring.git

via OpenUPM

openupm add com.thammin.unity-spring

Usage

Every solver is just a simple class with few fields.

using UnityEngine;
using Spring = UnitySpring.ClosedForm.Spring;

public class Ball : MonoBehaviour
{
    Spring spring;

    void Start()
    {
        // interpolate from -10f to 10f
        spring = new Spring()
        {
            startValue = -10f,
            endValue = 10f
        };
    }

    void Update()
    {
        var x = spring.Evaluate(Time.deltaTime);
        transform.position = new Vector3(x, 0f, 0f);
    }
}

Screenshot or demo

Visualizer:

FAQ

Unity SmoothDamp

Source code: link

Based on closed-form solution, but only modeling critically damped spring. Using tweaked Exponential approximation (up to Taylor 3rd order) which claims as roughly 80 times faster and approximate less than 0.1% error than exp function.

// tweaked coefficients
float exp = 1F / (1F + x + 0.48F * x * x + 0.235F * x * x * x);

References

Analytical:

Numerical:

General:

License

MIT

About

A minimal spring physics library for Unity

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages