Spieler teleportieren
Lektion 6 von 18 im Kurs Roblox-Spiel: Katastrophen überleben von Coddy.
Eine Insel, auf der niemand steht, ist kein Spiel. Wenn eine Runde beginnt, geht jeder Spieler zum Spawn der Karte, und wenn sie endet, zurück in die Lobby.
Players:GetPlayers() listet alle im Spiel auf, und der Körper eines Spielers ist player.Character, ein Model. Model:PivotTo(cframe) bewegt ein ganzes Modell auf einmal, wobei jedes Teil seinen Platz behält. Ein CFrame ist eine Position plus eine Drehung, und durch das Addieren eines Vector3 wird es verschoben:
local function teleport(player, target)
local character = player.Character
if character then
character:PivotTo(target.CFrame + Vector3.new(0, 4, 0))
end
endDie 4 Studs nach oben lassen den Spieler ein wenig über dem Ziel statt darin landen. player.Character ist nach dem Beitreten oder Sterben für einen Moment nil, daher das if.
Aufgabe
MittelBewege die Spieler:
- Behalte den Spawnpunkt der Lobby nahe am Anfang bei:
local lobbySpawn = workspace.LobbySpawn. - Schreibe
teleport(player, target)wie in der Lektion. - Teleportiere direkt nach dem Laden der Karte jeden Spieler zu
map.Spawn. - Wenn der Countdown der Runde endet, teleportiere jeden Spieler zu
lobbySpawn, bevor die Karte zerstört wird.
Drücke Play und fahre mit, dann Check.
Probier es selbst
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
print("Rounds last " .. Settings.RoundLength .. " seconds")
-- Jeder Spieler erhält Wins auf der Bestenliste
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local wins = Instance.new("IntValue")
wins.Name = "Wins"
wins.Parent = leaderstats
end)
-- Die Statustafel in der Lobby
local gui = Instance.new("SurfaceGui")
gui.Parent = workspace.StatusBoard
local status = Instance.new("TextLabel")
status.Name = "Status"
status.Size = UDim2.fromScale(1, 1)
status.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
status.TextColor3 = Color3.fromRGB(255, 255, 255)
status.TextScaled = true
status.Text = "Welcome to Disaster Survival!"
status.Parent = gui
local function setStatus(text)
status.Text = text
end
-- Die Rundenschleife
while true do
for seconds = Settings.Intermission, 1, -1 do
setStatus("Intermission: " .. seconds)
task.wait(1)
end
local map = ServerStorage.Maps.Island:Clone()
map.Name = "Map"
map.Parent = workspace
for seconds = Settings.RoundLength, 1, -1 do
setStatus("Time left: " .. seconds)
task.wait(1)
end
map:Destroy()
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.