Articles

UI Feedback Design: Buttons, Health Bars, and Transitions That Feel Right

Every UI element is a feedback surface. Hover states, click animations, health bar drain curves, XP fill effects, and screen transition wipes - how to build UI that communicates state through motion and sound.

29 April 2026 ยท 8 min read

UI is often the last place developers look for juice, and the first place players touch. Before they fight a single enemy, they've hovered a button. Before they understand the combat system, they've watched a health bar move. The interface is the first feedback surface in the game, and it earns trust or loses it immediately.

Juicing the UI doesn't mean making it loud or animated for its own sake. It means making every state change legible, every interaction feel confirmed, and every number meaningful. The goal is the same as game feedback everywhere: make the player feel like the system is responding to them specifically, in real time.

Buttons and Interactive Elements

Interactive elements need to communicate three things: that they are interactive, that the input was received, and what the result of that input will be. Each of these is a separate feedback problem.

Hover state communicates interactivity. A subtle scale-up to 105% on hover, combined with a colour shift on the label or background, tells the player this element will respond to a click. Without a hover state, flat UI elements are indistinguishable from decorative elements until clicked. The hover should be immediate - no delay, no tween-in. Responsiveness is the signal, not beauty.

Press state confirms the input. A squash-down to 95% scale on click is the minimum - it mimics the physical reality of pressing a physical button, giving the digital action a tactile echo. The press animation should trigger on pointer-down, not pointer-up. If you wait for the release to show the feedback, the interaction feels 30 milliseconds slower than it actually is. That delay is perceptible.

Release animation provides the satisfying conclusion. Bounce back from 95% to 100% with a slight overshoot - hit 102% briefly before settling - using an elastic ease. This overshoot is critical. A linear return to normal scale feels dead. The elastic bounce confirms that the button has energy and responded to input. It's a one-frame investment that makes every click feel authoritative.

Disabled states are often forgotten but matter. A disabled button with full visual weight looks like a bug when clicked and nothing happens. Reduce opacity to 40%, remove the hover response entirely, and change the cursor to indicate non-interactivity. The player should understand at a glance that this element won't respond - not learn it through failed interaction.

Health Bars and Resource Meters

The health bar is the most-read piece of UI in the game. Players glance at it dozens of times per minute. It needs to communicate change instantly and clearly, with enough visual weight that a peripheral glance is sufficient.

The fill position should jump immediately on change, not tween. When you take damage, your health dropped right now. Tweening the main fill to the new value creates ambiguity: is the bar still moving, or is that my current health? The main fill is fact. It should be instant.

The ghost bar - a second, lighter-coloured bar behind the main fill - is one of the most effective UI feedback techniques in games. When damage is taken, the main bar jumps immediately to the new value. The ghost bar holds at the old value for 400 milliseconds, then slowly tweens to match. This brief lag shows the player exactly how much health was just lost. Dark Souls and Elden Ring use this technique to devastating effect: you watch your health evaporate behind the current fill and understand exactly how close to death you are.

On change, pulse the bar container to 105% scale then back over six to eight frames. This micro-animation draws the eye to the change even when the player isn't directly looking at the bar. The brain is wired to detect motion in peripheral vision - use that reflex.

Colour transition across the health range prevents the worst UI failure mode: a bar that stays green until it suddenly jumps to critical. The fill colour should interpolate: green above 60%, shifting through yellow between 60% and 30%, then red below 30%. The player should see danger approaching, not be surprised by it.

At low health, add a persistent pulsing effect - a gentle scale oscillation on the bar or a flashing of the red fill. This isn't decorative; it's ambient urgency that keeps the player aware of their state without requiring them to look directly at the bar every second. Pair with the post-processing vignette covered in the previous article for a multi-channel low-health warning that's hard to miss.

Transitions and State Changes

Hard cuts between UI states feel like technical failures. When an inventory panel appears instantly, the player's brain doesn't know whether that was intentional or a rendering glitch. A 100 to 200 millisecond transition is long enough to be intentional, short enough to not feel like waiting.

Directional transitions should respect spatial logic. If your inventory panel lives to the right of the screen in your mental model, it should slide in from the right when opened and slide out to the right when closed. If a sub-menu opens from a button at the bottom, it should emerge from the bottom. Spatial consistency teaches the player where UI elements live without requiring a tutorial.

For panels that appear in place - dialog boxes, confirmation prompts, tooltips - a scale-from-95%-to-100% combined with fade-in creates a sense of the element emerging or popping up. The reverse on close (scale to 95%, fade out) feels like it's collapsing back into the UI layer rather than simply vanishing. These micro-transitions take one to two hours to implement and add a quality signal that players register unconsciously but consistently.

Menu navigation transitions should be fast. In-game UI transitions can afford 150 to 200 milliseconds. Main menus can go up to 300 milliseconds for cinematic feel. But any transition that delays player input by more than 250 milliseconds will start to feel like lag rather than polish. The transition is a grace note, not a performance.

Progress Bars, XP, and Achievement Feedback

Progress feedback is reward feedback. XP bars, level-up notifications, and achievement pops are the game rewarding the player for their actions. This category of UI has one job: make the reward feel significant. The mechanics can be thin; the feedback should be rich.

XP bar fill should be animated with a satisfying sweep - not an instant jump. The fill travels from its current position to the new position over 400 to 600 milliseconds using an ease-out curve. This builds anticipation and makes the XP gain legible as a quantity. When the bar reaches 100% and overflows into a level-up, the sweep should trigger a separate, larger feedback event: sound, flash, scale pulse, and possibly a brief time-scale slow.

Achievement notifications should slide in from a corner, trigger their sound and animation, and then fade out after three to four seconds - without interrupting gameplay. The player glances at it, registers the reward, and returns their attention to the game. Never interrupt combat or time-critical moments with a modal achievement pop. Your game's quality will be measured by players who compare it to the smoothest achievement implementation they've experienced.

Combo counters deserve their own treatment. The counter should scale with the combo value - a 5x combo counter should be visually larger and more prominent than a 2x counter. When the combo is active, numbers should pulse slightly on each increment. When the combo ends, the counter should break apart with a satisfying animation - shatter, explode, or dissolve - rather than simply disappearing. The break animation is the last piece of feedback from that combo chain. Make it feel like something ended.

Floating Numbers and Text Events

Floating damage numbers are a UI feedback element that lives in world space. They belong in this article because the design decisions governing them are UI decisions: legibility, hierarchy, information density, and visual weight.

The scale and style of a floating number should encode information. Normal hits get white numbers at base size. Critical hits get orange or gold numbers at 150% scale. Status effects (poison, burn) get coloured numbers matching the status colour. Healing gets green. This colour-coding allows the player to read combat at a glance without processing every individual number.

Motion arc matters. Numbers that float straight up read as neutral. Numbers that arc slightly outward while floating up feel like the damage was delivered with force. The arc direction can encode the hit direction if your game has directional combat. Keep the lifetime short: 600 to 800 milliseconds, fading out in the last 200 milliseconds. Numbers that linger too long clog the visual field and create a readability problem as new numbers appear over old ones.

Batching is important for high-frequency hit scenarios. If your weapon hits multiple times per second, showing every individual hit number makes the screen unreadable. Consider batching numbers within a short window (50 to 100 milliseconds) and showing the total, or staggering them spatially so they don't overlap. The goal is information, not visual noise.

Consistency Is the Foundation

The single highest-leverage rule in UI feedback: be consistent. If health bars pulse on change, every health bar in the game should pulse on change. If buttons squash on press, every button in the game should squash on press. Inconsistency reads as incompleteness - some part of the game feels finished and another part feels like a prototype.

Build a UI animation library early - a set of standard transitions, pulses, and state change animations that every UI element can use. When you add a new UI element, you're choosing from the existing vocabulary, not inventing a new one. This disciplines your design and ensures the whole UI feels like it comes from the same language.

Part of a series

Visual Techniques