To make a heart health system in Roblox, the usual setup is a GUI with heart icons that change as the player’s Humanoid health changes. A common approach is to treat each heart as a chunk of HP, then hide or fill hearts based on the current health value.

Simple setup

  1. Create a ScreenGui in StarterGui.
  2. Add several ImageLabels for the heart icons.
  3. Put a LocalScript in the GUI to watch the player’s health.
  4. Update each heart’s visibility or fill level whenever health changes.

Example logic

If each heart equals 20 HP, you can calculate how many full hearts the player has with:

lua

local fullHearts = math.floor(hp / 20)

Then use the remaining health to show a partial heart if needed.

Basic scripting idea

A simple damage button test looks like this:

lua

button.MouseButton1Click:Connect(function()
    local char = player.Character or player.CharacterAdded:Wait()
    local humanoid = char:FindFirstChildOfClass("Humanoid")
    if humanoid then
        humanoid:TakeDamage(25)
    end
end)

That kind of test is often used to confirm the heart UI is updating correctly.

Doctor Heart note

If you meant Doctor Heart from Adopt Me, that is a specific NPC in the hospital lobby, not a Roblox scripting term. If you meant “how do I make a doctor/heart UI in a Roblox game,” then the heart-bar method above is the right direction.

Practical tip

For a cleaner look, use one heart image and swap between full, half, and empty states instead of trying to clip a square frame into a heart shape. Roblox forum advice also suggests using gradients or transparent image-based hearts for better results.

TL;DR: build a heart GUI, connect it to Humanoid.HealthChanged, and update the heart icons based on health chunks like 20 HP per heart.