Buzzkit is a haptics package for Unity that gives you one clean API for vibration and rumble across iOS, Android, and game controllers. Design a haptic effect once and every device renders it: the iPhone's Taptic Engine, an Android phone's vibrator, or a controller's rumble motors, all from a single line of code.

Effects are authored as platform-agnostic HapticPattern assets, a timeline of events each with an intensity and a sharpness. iOS maps them to Core Haptics, Android samples them into a vibration waveform, and a gamepad crossfades them across its two rumble motors. Prefer to skip the designer? Buzzkit ships with 40+ ready-made patterns: taps, impacts, UI ticks, rewards, combat hits, and more.

Buzzkit is built to be safe to call from anywhere. It never throws and never buzzes unexpectedly: on hardware without haptics, or when the player has turned haptics off, every call is simply a silent no-op. A global enable toggle and intensity slider are built in, persist automatically, and double as an accessibility feature.

Quick start

Add the namespace and call the static methods from anywhere:

// One-line presets, safe on every platform Haptics.Selection(); Haptics.Impact(ImpactStyle.Heavy); Haptics.Notify(NotifyType.Success); // Play a custom pattern on phone and controller alike Haptics.Play(explosionPattern); // Wire straight into your settings menu (values persist) Haptics.Enabled = hapticsToggle.isOn; Haptics.Intensity = intensitySlider.value;

Features

  • One-line presets Haptics.Selection(), Haptics.Impact(ImpactStyle.Heavy), and Haptics.Notify(NotifyType.Success) give instant, tuned feedback.
  • Author once, feel everywhere A single HapticPattern renders on iOS, Android, and gamepads with no per-platform code.
  • 40+ built-in patterns Impacts, UI ticks, rewards, combat, motion, and notifications, ready to play by name.
  • Player controls and accessibility A global enable toggle and intensity slider, persisted to PlayerPrefs and applied live, even mid-effect.
  • Per-controller targeting Address a single gamepad by index for local co-op with PlayOnGamepad, or aim effects using the HapticTarget flags.
  • Gamepad rumble done right Dual-motor rumble through the Input System, with automatic stuck-motor protection on focus loss, pause, and unplug.
  • Capability queries Check Haptics.IsSupported and Supports(...) to adapt your UI when there is no haptic hardware.
  • Editor Haptics window Browse built-in and custom patterns, search, duplicate, and audition them in play mode from Tools ▸ Buzzkit ▸ Haptics.
  • Safe by design Never throws, never buzzes unexpectedly; unsupported hardware or disabled haptics is always a silent no-op.
  • No native binaries A pure C#/JNI Android backend and a source Core Haptics bridge for iOS, with nothing to clash with your other plugins.
  • Console-ready A documented IHapticRenderer extension point lets licensed studios add their own backend.

Technical details

  • Packagecom.zest.buzzkit
  • Unity versionUnity 2021.3 or newer
  • PlatformsiOS 13+ (Core Haptics), Android 8+ (Vibrator), and Input System gamepads on PC, Mac, and Steam
  • DependenciesNone required; the Unity Input System (optional) enables gamepad rumble
  • NamespaceZest.Buzzkit
  • Entry pointHaptics static class: Selection, Impact, Notify, Play, Stop, Prepare
  • AuthoringHapticPattern ScriptableObject: a timeline of intensity and sharpness events
  • AssembliesRuntime, Gamepad (optional, Input System), and Editor
  • Render pipelineAny: Built-in, URP, or HDRP (Buzzkit is input and feedback, not rendering)
  • ExtensibilityIHapticRenderer for custom or console backends