Designing explosion Haptics in Unity
A well-designed explosion rumble pattern reads as an impact: a sharp, strong-motor attack spike that decays quickly, with a low-frequency tail that carries the pressure wave. The reason this shape works is that the first 50–100ms sell the hit; the decaying tail keeps the effect readable without overpowering the game audio.
When to use it: pair it with the actual audio explosion cue — the tactile peak should land on the audio transient, not slightly before or after. Tuning notes: Explosions are the hardest effect to tune because they fight the game audio for attention. The classic failure is an over-long tail that muddies the next cue; the fix is to cut the decay before the rumble becomes a drone. On real controllers, the strong motor carries most of the pressure wave while the weak motor should stay quiet or pulse once at the moment of detonation — giving both motors a full-strength tail is the most common reason an explosion feels like a vibration rather than a hit.
Engine integration
In Unity, Unity exposes both motors through Gamepad.SetMotorSpeeds every frame; drive them from a coroutine that samples the waveform at fixed intervals instead of hardcoding one-shot values. For the explosion pattern specifically, for a {effect} curve, step the coroutine along the envelope so the attack/decay shape survives gameplay pacing changes. Unity's gamepad writes are per-frame and CPU-cheap, but be careful about driving SetMotorSpeeds from Update() when the game is paused — pausing freezes the envelope unless you sample against Time.unscaledTime, so clock the coroutine on unscaled time for effects that must survive a pause menu.
Unity's strength is cross-platform reach: the same SetMotorSpeeds call works on Windows, macOS, Android and consoles through the native gamepad backend, so your {effect} effect ships everywhere with one coroutine. The trade-off is that platform quirks live in the Input System layer — on Windows the legacy Input Manager and the new Input System package expose the same motor writes through different entry points, so pick one and keep the whole envelope in that system. Because the loop runs at frame rate, an explosion sampled at 30fps needs the same keyframes as one at 120fps; sample by unscaled time, never by frame count, or the feel drifts between quality presets.
Haptic feedback bridges the gap between digital interaction and physical sensation. Matching the visual and auditory cues with the tactile response is what makes the effect feel intentional rather than decorative.