チェックポイント
CoddyのLuaジャーニー「Robloxゲームのスクリプティング」セクションの一部。レッスン 22/24。
プレイヤーが倒されると、Robloxは5秒(Players.RespawnTime)待ってから、SpawnLocationに新しいキャラクターを出現させます。場所に複数のSpawnLocationがある場合、Robloxはランダムに1つを選ぶため、チェックポイントが誤ってスタート地点になることがあります。
各プレイヤーにはRespawnLocationプロパティがあります。これをSpawnLocationに設定すると、そのプレイヤーは常にそこにリスポーンします。Obbyではこれを2回使います。プレイヤーが参加したときはスタート地点を指定し、チェックポイントに到達したときはチェックポイントに変更します。
local Players = game:GetService("Players")
local camp = workspace.Camp
camp.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player then
player.RespawnLocation = camp
end
end)RespawnLocationは各プレイヤーに属するため、1人のプレイヤーがキャンプに到達しても、ほかのプレイヤーの設定は変わりません。
チャレンジ
中級灰色のパッドはworkspace.Startで、青く光るパッドはチェックポイントです(どちらもSpawnLocationsです)。このスクリプトはチェックポイントの中にあります。
- プレイヤーが参加したら、そのプレイヤーの
RespawnLocationをworkspace.Startに設定します。 - プレイヤーがチェックポイントに触れたら、そのプレイヤーの
RespawnLocationをチェックポイントに設定し、緑色にします:Color3.fromRGB(0, 255, 0)。
Playを押し、チェックポイントに乗ってから、奥にある溶岩に入ります。チェックポイントに戻ってくるはずです。その後、Checkを押します。
自分で試してみよう
local Players = game:GetService("Players")
local checkpoint = script.Parent
Players.PlayerAdded:Connect(function(player)
-- すべてのプレイヤーをworkspace.Startから開始させる
end)
checkpoint.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player then
-- 今後、このプレイヤーをここでリスポーンさせる
-- checkpointを緑色にする
end
end)
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Robloxゲームのスクリプティングのすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ