اسلك المسار
الدرس 2 من 18 في دورة لعبة Roblox: الدفاع عن الأبراج على Coddy.
تسير الأعداء على مسار تحدده أجزاء غير مرئية في workspace.Path.Waypoints، بأسماء من 1 إلى 6. لا يضمن GetChildren ترتيبًا معينًا، لذا رتّبها أولًا حسب الرقم في أسمائها:
table.sort(waypoints, function(a, b)
return tonumber(a.Name) < tonumber(b.Name)
end)كل عدو هو نموذج في ServerStorage.Enemies: انسخه، وضعه فوق نقطة المسار 1 باستخدام PivotTo، واجعل workspace.Enemies هو العنصر الأب له.
يتحرك Humanoid باستخدام MoveTo، ويُطلَق الحدث MoveToFinished عند وصوله. وبعد 8 ثوانٍ يتوقف عن المحاولة ويُطلَق مع false، لذا يُرسَل العدو البطيء على مقطع طويل مجددًا حتى يصل:
repeat
humanoid:MoveTo(waypoints[i].Position)
until humanoid.MoveToFinished:Wait()يستغرق المشي وقتًا، لذا تعمل walkPath في مسار تنفيذ خاص بها باستخدام task.spawn، ويواصل البرنامج النصي التنفيذ.
التحدي
سهل- احصل على
ServerStorageوlocal enemies = workspace.Enemies. - ضع نقاط المسار في قائمة ورتّبها حسب الرقم.
- اكتب
walkPath(enemy): انتقل عبر نقاط المسار من 2 إلى الأخيرة، واستخدمMoveToحتى تشيرMoveToFinishedإلى وصول العدو. توقّف إذا اختفى العدو (not enemy.Parent). - اكتب
spawnEnemy(kind): انسخ النموذج، وضعه على ارتفاع 5 وحدات studs فوق نقطة المسار 1، واجعلenemiesهو العنصر الأب له، وابدأwalkPathباستخدامtask.spawn، ثم أعده. - أنشئ عدوًا واحدًا من النوع
"Zombie".
اضغط Play وشاهده وهو يمشي. ثم اضغط Check.
جرّب بنفسك
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
print("The base can take " .. Settings.BaseHealth .. " hits")
-- يحصل كل لاعب على Money في لوحة المتصدرين
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local money = Instance.new("IntValue")
money.Name = "Money"
money.Value = Settings.StartMoney
money.Parent = leaderstats
end)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.