Взмах
Урок 2 из 20 курса Игра в Roblox: Боевые арены на Coddy.
Когда инструмент в руке, щелчок (или касание) вызывает событие Activated у Tool — в том числе и на сервере. При взмахе воспроизводится стандартный звук удара мечом из Roblox: объект Animation указывает анимацию по её идентификатору, а Animator персонажа, находящийся в его Humanoid, загружает её в дорожку для воспроизведения:
local slash = Instance.new("Animation")
slash.AnimationId = "rbxassetid://522635514"
character.Humanoid.Animator:LoadAnimation(slash):Play()Без ограничения игрок мог бы щёлкать как угодно быстро, поэтому для каждого игрока в таблице сохраняется время последнего взмаха, а новый взмах не разрешается в течение Settings.SwingCooldown секунд.
Задание
Легко- Ближе к началу добавь
local lastSwing = {}и Animationslash(idrbxassetid://522635514). - Напиши
swing(player)перед PlayerAdded: выходи из функции, если у игрока нет живого персонажа или он замахивался менее чемSettings.SwingCooldownназад; иначе сохрани время и воспроизведи slash на его Animator. - Там, где выдаёшь меч, подключи его
Activatedкswing(player).
Нажми Играть, возьми меч и щёлкни мышью. Затем нажми Проверить.
Попробуйте сами
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
print("Swords deal " .. Settings.SwordDamage .. " damage")
-- Каждый игрок получает Kills в таблице лидеров и меч при каждом возрождении
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local kills = Instance.new("IntValue")
kills.Name = "Kills"
kills.Parent = leaderstats
player.CharacterAdded:Connect(function()
local sword = ServerStorage.Sword:Clone()
sword.Parent = player.Backpack
end)
end)
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.