振る
Coddyの「Robloxゲーム:バトルグラウンド」コースのレッスン 2/20。
ツールを手に持った状態でクリック(またはタップ)すると、サーバー上でもツールのActivatedイベントが発火します。スイングすると、Roblox独自の剣の斬撃アニメーションが再生されます。AnimationではIDでアニメーションを指定し、Humanoid内のキャラクターのAnimatorがそれをトラックに読み込んで再生します。
local slash = Instance.new("Animation")
slash.AnimationId = "rbxassetid://522635514"
character.Humanoid.Animator:LoadAnimation(slash):Play()制限がなければ、プレイヤーはいくらでも速くクリックできてしまうため、スイング時刻をプレイヤーごとにテーブルへ記録し、Settings.SwingCooldown秒以内に次のスイングを行おうとした場合は拒否します。
チャレンジ
簡単- 上部付近に、
local lastSwing = {}とslashAnimation(idrbxassetid://522635514)を追加します。 - PlayerAdded の上に
swing(player)を書きます。プレイヤーに生きているキャラクターがいない場合、または最後に振ってからSettings.SwingCooldown未満しか経過していない場合は return します。そうでなければ時刻を記録し、Animator で slash を再生します。 - 剣を渡す箇所で、その
Activatedをswing(player)に接続します。
Play を押し、剣を持ってクリックします。その後、Check を押します。
自分で試してみよう
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)
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。