Menu
CoddyTech

振る

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秒以内に次のスイングを行おうとした場合は拒否します。

challenge icon

チャレンジ

簡単
  1. 上部付近に、local lastSwing = {} と slash Animation(id rbxassetid://522635514)を追加します。
  2. PlayerAdded の上に swing(player) を書きます。プレイヤーに生きているキャラクターがいない場合、または最後に振ってから Settings.SwingCooldown 未満しか経過していない場合は return します。そうでなければ時刻を記録し、Animator で slash を再生します。
  3. 剣を渡す箇所で、その 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)
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Robloxゲーム:バトルグラウンドのすべてのレッスン