Steigendes Hochwasser
Lektion 11 von 20 im Kurs Roblox-Spiel: Katastrophen überleben von Coddy.
Wasser, das unter der Insel wartet, lässt sich leicht vermeiden. Eine Flut steigt, aber nicht bis ganz nach oben: Die Felsen auf der Island und die Dächer auf Rooftops bleiben trocken, sodass ein Spieler, der rechtzeitig hinaufklettert, überlebt. Eine Katastrophe, die niemand überleben kann, ist kein Spiel.
TweenService ändert eine Eigenschaft im Laufe der Zeit gleichmäßig: Beschreibe mit einem TweenInfo, wie lange es dauern soll, gib die Zielwerte in einer Tabelle an und starte es mit Play:
local rise = TweenInfo.new(6, Enum.EasingStyle.Linear)
TweenService:Create(water, rise, { Position = water.Position + Vector3.new(0, 3, 0) }):Play()Enum.EasingStyle.Linear sorgt für ein gleichmäßiges Tempo; die Standardeinstellung beginnt schnell und wird dann langsamer. Die Tween-Animation läuft von selbst, sodass der Countdown der Runde weiterläuft, während das Wasser steigt.
Aufgabe
MittelLass die Flut über der Insel ansteigen.
- Rufe
TweenServiceganz oben ab. - Erzeuge am Ende von
Disasters.Floodeine Tween-Animation für die Position des Wassers: Es soll sich innerhalb vonSettings.RoundLength * 0.8Sekunden um 8 Studs nach oben bewegen. Verwende dabeiEnum.EasingStyle.Linear.
Drücke „Spielen“: Das Wasser steigt über die Insel und bleibt unterhalb der Felsgipfel stehen. Klicke dann auf „Prüfen“.
Probier es selbst
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
local lobbySpawn = workspace.LobbySpawn
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
local function teleport(player, target)
local character = player.Character
if character then
character:PivotTo(target.CFrame + Vector3.new(0, 4, 0))
end
end
local function defeat(hit)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
-- Die Katastrophen, nach Namen geordnet
local Disasters = {}
function Disasters.Flood(map)
local base = map.Base
local water = Instance.new("Part")
water.Name = "Water"
water.Anchored = true
water.CanCollide = false
water.Transparency = 0.3
water.Color = Color3.fromRGB(40, 120, 255)
water.Size = Vector3.new(base.Size.X + 10, 1, base.Size.Z + 10)
water.Position = base.Position - Vector3.new(0, 2, 0)
water.Parent = map
water.Touched:Connect(defeat)
-- Lektion 11: Hier kommt Rising Flood hin
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
local survivors = {}
for _, player in Players:GetPlayers() do
local character = player.Character
if character and character.Humanoid.Health > 0 then
teleport(player, map.Spawn)
survivors[player] = true
character.Humanoid.Died:Connect(function()
survivors[player] = nil
end)
end
end
Disasters.Flood(map)
for seconds = Settings.RoundLength, 1, -1 do
setStatus("Time left: " .. seconds)
task.wait(1)
end
local names = {}
for player in survivors do
player.leaderstats.Wins.Value += 1
teleport(player, lobbySpawn)
table.insert(names, player.Name)
end
map:Destroy()
if #names > 0 then
setStatus("Winners: " .. table.concat(names, ", "))
else
setStatus("Nobody survived!")
end
task.wait(3)
end
Alle Lektionen in Roblox-Spiel: Katastrophen überleben
4Mach ein Spiel daraus
Zwei Maps3Katastrophen
Wasser, das alles besiegtÜbe selbstständig: Roblox-Playground