← All packages
Smooth Pro
Lissage indépendant du frame rate pour Unity. Le correctif direct pour l'erreur Unity la plus courante :
utiliser Lerp(value, target, 0.1f) à chaque frame.
Le problème
Cassé (dépendant du frame rate)
// 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);
Corrigé (indépendant du frame rate)
// 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);
Démarrage rapide
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); // --- Amortisseurs à ressort --- // 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);
Lissage exponentiel - Smooth
Classe statique. Toutes les méthodes surchargées pour float, Vector2, Vector3, Quaternion et Color.
| Method | Description |
|---|---|
Smooth.Exp(value, target, speed, dt) | Lissage exponentiel utilisant exp(-speed * dt). Le correctif principal. |
Smooth.ExpHalfLife(value, target, halfLife, dt) | Même mathématique, paramétré par demi-vie en secondes. Convivial pour les designers. |
Smooth.ExpAngle(value, target, speed, dt) | Version sensible aux angles. Gère correctement le wrap 0/360. |
Smooth.SpeedFromBrokenLerpT(t, fps) | Convertir la valeur t d'un lerp cassé existant en vitesse correcte à un fps de référence. |
Smooth.ConvergenceTime(speed, pct) | Combien de temps pour atteindre un pourcentage donné (99% par défaut) de convergence. |
Amortisseurs à ressort - Spring
Dynamique de ressort de second ordre avec sous-pas adaptatif pour la stabilité du frame rate. Surchargé pour float, Vector2, Vector3.
| Method | Description |
|---|---|
Spring.Critical(val, target, ref vel, freq, dt) | Amortissement critique. Convergence la plus rapide sans dépassement. |
Spring.Bouncy(val, target, ref vel, freq, bounciness, dt) | Sensation élastique/ressort avec rebond configurable (0-1). |
Spring.Damped(val, target, ref vel, freq, damping, dt) | Ressort de second ordre général avec ratio d'amortissement arbitraire. |
Fonctions d'easing - Ease
30+ courbes standard. Chacune disponible en variantes In, Out et InOut.
| Famille | Courbes |
|---|---|
| Polynomial | Quad, Cubic, Quart, Quint |
| Trigonometric | Sine |
| Exponential | Expo, Circ |
| Overshoot | Back, Elastic, Bounce |
| Hermite | SmoothStep, SmootherStep (Perlin variant) |
Ease.Lerp(start, end, t, EaseType) combine easing + interpolation en un seul appel.
Editor tools
Window > DAWG Tools > Smooth Inspector
- Mode exponentiel - Graphique côte à côte comparant Lerp naïf vs Smooth.Exp à 30/60/144fps. Visualisez la dépendance au frame rate.
- Mode ressort - Visualisation de courbe de réponse montrant le dépassement, le temps de stabilisation et l'oscillation pour les paramètres rebondissants.
- Mode easing - Aperçu de la forme de courbe pour toutes les 30+ fonctions d'easing.
- Test de stress dt - Testez votre lissage sous FPS constant, frames avec jitter, FixedUpdate et tick rates personnalisés.
- Assistant de migration - Convertit vos valeurs lerp cassées existantes en vitesses exponentielles correctes. Code prêt à copier-coller.
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. Aucune dépendance externe.