Teletransportar jugadores
Lección 6 de 20 del curso Juego de Roblox: Supervivencia ante desastres de Coddy.
Una isla en la que nadie aparece no es un juego. Cuando empieza una ronda, cada jugador va al Spawn del mapa y, cuando termina, vuelve al vestíbulo.
Players:GetPlayers() enumera a todos los que están en el juego, y el cuerpo de un jugador es player.Character, un Model. Model:PivotTo(cframe) mueve todo un modelo de una vez, manteniendo cada parte en su lugar. Un CFrame es una posición más una rotación, y sumarle un Vector3 lo desplaza:
local function teleport(player, target)
local character = player.Character
if character then
character:PivotTo(target.CFrame + Vector3.new(0, 4, 0))
end
endLos 4 studs hacia arriba hacen que el jugador aparezca un poco por encima del objetivo, en lugar de dentro de él. player.Character es nil durante un momento después de unirse o morir; de ahí el if.
Desafío
IntermedioEnvía a los jugadores a la isla y de vuelta.
- Escribe
teleport(player, target): si existeplayer.Character,PivotTo(target.CFrame + Vector3.new(0, 4, 0)). - Justo después de que se cargue el mapa, teletransporta a todos los jugadores a
map.Spawn. - Cuando termine la cuenta regresiva de la ronda, teletransporta a todos al vestíbulo usando
lobbySpawn, antes de que se destruya el mapa.
Presiona «Jugar»: aterrizas en la isla cuando comienza la ronda y vuelves al vestíbulo cuando termina. Después, presiona «Comprobar».
Pruébalo tú mismo
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
print("Rounds last " .. Settings.RoundLength .. " seconds")
-- Cada jugador recibe Wins en la tabla de clasificación
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)
-- El panel de estado en la sala de espera
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
-- Lección 6: Teletransportar jugadores va aquí
-- El bucle de rondas
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
Todas las lecciones de Juego de Roblox: Supervivencia ante desastres
4Conviértelo en un juego
Dos mapas2Mapas y jugadores
Cargar un mapaPractica por tu cuenta: Playground de Roblox