التلويح بالسيف
الدرس 2 من 20 في دورة لعبة Roblox: ساحات القتال على Coddy.
عند حمل أداة، يؤدي النقر (أو اللمس) إلى إطلاق حدث Activated الخاص بالأداة، على الخادم أيضًا. وتُشغّل الضربة حركة قطع السيف الخاصة بـRoblox: يحدّد عنصر Animation الحركة بمعرّفها، ثم يحمّلها عنصر Animator في الشخصية، الموجود داخل Humanoid، إلى مسار لتشغيلها:
local slash = Instance.new("Animation")
slash.AnimationId = "rbxassetid://522635514"
character.Humanoid.Animator:LoadAnimation(slash):Play()من دون حد، يمكن للاعب النقر بالسرعة التي يريدها، لذا تتذكّر الضربة وقت آخر ضربة لكل لاعب في جدول، وترفض تنفيذ ضربة أخرى خلال Settings.SwingCooldown ثانية.
التحدي
سهل- بالقرب من الأعلى، أضف
local lastSwing = {}ورسومslashالمتحركة (المعرّفrbxassetid://522635514). - اكتب
swing(player)فوق PlayerAdded: أعد التنفيذ إذا لم يكن لدى اللاعب شخصية حية أو إذا كان قد نفّذ ضربة قبل أقل منSettings.SwingCooldown؛ وإلا فاحفظ الوقت وشغّل حركة الضربة على Animator الخاص به. - في الموضع الذي تمنح فيه السيف، اربط
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)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.