Menu
CoddyTech

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
end

Die 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.

challenge icon

Aufgabe

Mittel

Bewege die Spieler:

  1. Behalte den Spawnpunkt der Lobby nahe am Anfang bei: local lobbySpawn = workspace.LobbySpawn.
  2. Schreibe teleport(player, target) wie in der Lektion.
  3. Teleportiere direkt nach dem Laden der Karte jeden Spieler zu map.Spawn.
  4. 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
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Roblox-Spiel: Katastrophen überleben