Урок Roblox StudioЗанятие 1 / 8

Шкала здоровья в GUI

Отображать здоровье персонажа

Шкала здоровья в GUI
Иллюстрация к теме занятия

Цель

Показывать настоящее здоровье персонажа в интерфейсе.

Подготовка и расположение объектов

StarterGui → ScreenGui (ResetOnSpawn=false) → Frame HealthBar → Frame Fill; LocalScript внутри ScreenGui.

Пошаговая работа

  1. Создай панель HealthBar размером 240×25 и внутренний Fill, который занимает всю ширину.
  2. Вставь LocalScript в ScreenGui. Не помещай его в ServerScriptService.
  3. Запусти Play и уменьши здоровье персонажа через тестовую опасную деталь.

Код Luau

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local bar = script.Parent:WaitForChild("HealthBar")
local fill = bar:WaitForChild("Fill")
local connection

local function bindCharacter(character)
    if connection then connection:Disconnect() end
    local humanoid = character:WaitForChild("Humanoid")
    local function update()
        local fraction = math.clamp(humanoid.Health / math.max(humanoid.MaxHealth, 1), 0, 1)
        fill.Size = UDim2.fromScale(fraction, 1)
        fill.BackgroundColor3 = Color3.fromRGB(255 * (1 - fraction), 200 * fraction, 75)
    end
    connection = humanoid.HealthChanged:Connect(update)
    update()
end
player.CharacterAdded:Connect(bindCharacter)
if player.Character then bindCharacter(player.Character) end

Проверяем результат

Полоска уменьшается при уроне и восстанавливается при возрождении.

Частая ошибка

Убедись, что внутри HealthBar существует Fill и что код стоит в LocalScript.

Усложнение

Добавь TextLabel с надписью о количестве здоровья.

Для преподавателя

Проверь результат в Play и в эмуляторе мобильного устройства. Сделай собственные скриншоты Roblox Studio перед публикацией.

Проверь свою работу

Перед тестом убедись, что ты выполнил практику самостоятельно.

Эти отметки — личная памятка, они не влияют на звёзды.

Проверь себя

Ответь на вопросы урока. Успешный тест даёт одну звезду в личном кабинете.

⭐ Проверь свои знания

5 вопросов по теме урока. За 4 правильных ответа получишь звезду. Повторные попытки разрешены.

1. Какой объект хранит текущее здоровье персонажа?
2. Humanoid.Health = 30, Humanoid.MaxHealth = 100. Какую долю ширины должна занимать полоса?
3. Что делает строка fill.Size = UDim2.fromScale(health / maxHealth, 1)?
4. Почему после возрождения шкала здоровья перестала обновляться?
5. Как избежать деления на ноль при расчёте доли здоровья?