Menu
CoddyTech

経路を歩く

Coddyの「Robloxゲーム:タワーディフェンス」コースのレッスン 2/18。

敵は、workspace.Path.Waypoints内の目に見えないパーツで示された経路を歩きます。名前は1から6です。GetChildrenは順序を保証しないため、まず名前の数字で並べ替えます。

table.sort(waypoints, function(a, b)
	return tonumber(a.Name) < tonumber(b.Name)
end)

各敵はServerStorage.Enemies内のモデルです。これを複製し、PivotToを使ってウェイポイント1の上に配置し、workspace.Enemiesを親に設定します。

HumanoidはMoveToで歩き、到着するとMoveToFinishedイベントが発火します。8秒後に諦めてfalseを返すため、長い区間を進むのが遅い敵には、到着するまで再度指示を送ります。

repeat
	humanoid:MoveTo(waypoints[i].Position)
until humanoid.MoveToFinished:Wait()

歩行には時間がかかるため、walkPathはtask.spawnを使って独自のスレッドで実行され、スクリプトはそのまま処理を続けます。

challenge icon

チャレンジ

簡単
  1. ServerStorage と local enemies = workspace.Enemies を取得します。
  2. ウェイポイントをリストに入れ、番号順に並べ替えます。
  3. walkPath(enemy) を作成します。ウェイポイントの2番目から最後まで、到着したと MoveToFinished が示すまで MoveTo を実行します。敵がいなくなったら(not enemy.Parent)、停止します。
  4. spawnEnemy(kind) を作成します。モデルを複製し、ウェイポイント1の5 studs上に配置し、enemies を親に設定して、task.spawn で walkPath を開始し、それを返します。
  5. "Zombie" を1体スポーンします。

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)
quiz icon腕試し

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

Robloxゲーム:タワーディフェンスのすべてのレッスン