← All packages

Smooth Pro

Bildfrequenz-unabhängiges Smoothing für Unity. Der Drop-in-Fix für den häufigsten Unity-Fehler: Lerp(value, target, 0.1f) in jedem Frame.

v1.1.0 Unity 2021.3+ No dependencies namespace: DawgTools.Smooth

Das Problem

Kaputt (bildfrequenz-abhängig)

// This runs every frame with a fixed 10% step.
// At 30fps: 30 steps/sec. At 144fps: 144 steps/sec.
// Players on faster machines see faster smoothing.
value = Mathf.Lerp(value, target, 0.1f);

Korrigiert (bildfrequenz-unabhängig)

// Same behavior at any frame rate.
// Uses exp(-speed * dt) which naturally
// compensates for variable frame times.
value = Smooth.Exp(value, target, 10f, Time.deltaTime);

Schnellstart

using DawgTools.Smooth;

// --- Exponential smoothing ---

// Direct replacement for broken Lerp
transform.position = Smooth.Exp(transform.position, target, 10f, Time.deltaTime);

// Designer-friendly: "halfway to target in 0.2 seconds"
value = Smooth.ExpHalfLife(value, target, 0.2f, Time.deltaTime);

// Angle-aware (handles 0/360 wrap correctly)
angle = Smooth.ExpAngle(angle, targetAngle, 8f, Time.deltaTime);

// --- Federdämpfer ---

// Critically damped: fastest convergence, no overshoot
pos = Spring.Critical(pos, target, ref velocity, 5f, Time.deltaTime);

// Bouncy: overshoots and oscillates
scale = Spring.Bouncy(scale, targetScale, ref scaleVel, 8f, 0.5f, Time.deltaTime);

// --- Migration ---

// Convert your existing broken lerp value to correct speed
float speed = Smooth.SpeedFromBrokenLerpT(0.1f, 60f); // ~6.32

// --- Easing ---

float t = Ease.InOutCubic(progress);
value = Ease.Lerp(start, end, progress, EaseType.InOutElastic);

Exponentielles Smoothing - Smooth

Statische Klasse. Alle Methoden überladen für float, Vector2, Vector3, Quaternion und Color.

MethodDescription
Smooth.Exp(value, target, speed, dt)Exponentielles Smoothing mit exp(-speed * dt). Der Kern-Fix.
Smooth.ExpHalfLife(value, target, halfLife, dt)Gleiche Mathematik, parametrisiert durch Halbwertszeit in Sekunden. Designerfreundlich.
Smooth.ExpAngle(value, target, speed, dt)Winkel-bewusste Version. Behandelt 0/360-Wrap korrekt.
Smooth.SpeedFromBrokenLerpT(t, fps)Bestehenden fehlerhaften Lerp-t-Wert in korrekte Geschwindigkeit bei Referenz-fps konvertieren.
Smooth.ConvergenceTime(speed, pct)Wie lange es dauert, einen gegebenen Prozentsatz (Standard 99%) Konvergenz zu erreichen.

Federdämpfer - Spring

Federdynamik zweiter Ordnung mit adaptivem Substepping für Bildraten-Stabilität. Überladen für float, Vector2, Vector3.

MethodDescription
Spring.Critical(val, target, ref vel, freq, dt)Kritisch gedämpft. Schnellste Konvergenz ohne Überschwingen.
Spring.Bouncy(val, target, ref vel, freq, bounciness, dt)Elastisches/federndes Gefühl mit konfigurierbarer Sprungkraft (0-1).
Spring.Damped(val, target, ref vel, freq, damping, dt)Allgemeine Feder zweiter Ordnung mit beliebigem Dämpfungsverhältnis.

Easing-Funktionen - Ease

30+ Standardkurven. Jeweils verfügbar als In-, Out- und InOut-Varianten.

FamilieKurven
PolynomialQuad, Cubic, Quart, Quint
TrigonometricSine
ExponentialExpo, Circ
OvershootBack, Elastic, Bounce
HermiteSmoothStep, SmootherStep (Perlin variant)

Ease.Lerp(start, end, t, EaseType) kombiniert Easing + Interpolation in einem Aufruf.

Editor tools

Window > DAWG Tools > Smooth Inspector

  • Exponentialmodus - Nebeneinander-Graph: naives Lerp vs Smooth.Exp bei 30/60/144fps. Bildraten-Abhängigkeit visuell erkennen.
  • Federmodus - Antwortkurven-Visualisierung mit Überschwingen, Einschwingzeit und Ringing für bouncy Einstellungen.
  • Easing-Modus - Kurvenform-Vorschau für alle 30+ Easing-Funktionen.
  • dt-Stresstest - Testen Sie Ihr Smoothing unter konstantem FPS, Jitter-Frames, FixedUpdate und benutzerdefinierten Tick-Raten.
  • Migrationshilfe - Konvertiert Ihre bestehenden fehlerhaften Lerp-Werte in korrekte exponentielle Geschwindigkeiten. Kopierfertige Code-Snippets.

Installation

// Unity Package Manager > Add package from disk
// Navigate to package.json and select it

// Then import the demo scene:
// Package Manager > Motion Smoothing Pro > Samples > Import

Requires Unity 2021.3 LTS or newer. Keine externen Abhängigkeiten.