🎨 UI og Boost System

Lag boost-bokser i verden, vis meldinger på skjermen, og gi spilleren midlertidig fart og hopphøyde.

UI (TextLabel) Events (Touched) Services (Players) Humanoid (WalkSpeed/JumpPower) Timers (task.delay) WaitForChild

🎯 Mål for dette systemet

  • Bygge en mappe med deler («boost-bokser») i Workspace som trigger når spilleren går gjennom.
  • Lage ScreenGui med TextLabel som viser en melding.
  • Gi midlertidig fart og hopphøyde med kode — og resette etter noen sekunder.
Resultat: Tydelig "power-up" med trygg reset og forklarende tekst på skjermen.

🧱 Bygg i Studio: Slik setter du opp alt

Del A — Lag mappe med «boost-bokser» i Workspace

  1. Sett inn en Part i Workspace (rotnivå).

    Gi den navnet: boostBox

    Anchored: true (så den ikke faller)

    CanCollide: false (spilleren kan gå gjennom)

    CanTouch: true (må være på for at Touched skal trigge)

    Transparency: 0.7–1 (gjør den usynlig/halvtransparent)

    Size: f.eks. 8, 4, 8 (tilpass)

    Plassering: Legg den der spilleren passerer naturlig (løype, døråpning, rampe).

  2. (Valgfritt) Endre Color mens du tester, så du ser hvor boksen er. Sett den til transparent igjen før dere spiller.

Del B — Lag ScreenGui + TextLabel + LocalScript

  1. StarterGui, trykk på +ScreenGui (f.eks. navn BoostUI).
  2. Inni ScreenGui: lag en TextLabel.

    Text: f.eks. "Du fikk en boost!" (vi overskriver i kode)

    Visible: false (starter skjult)

    BackgroundTransparency: 0.3–0.5 (lesbart, men ikke i veien)

    AnchorPoint/Position/Size: Plasser øverst midt på skjermen

  3. Høyreklikk TextLabelLocalScript.
    Lim inn koden under. Denne kjører på spillerens maskin, styrer UI og leser av Humanoid.
Eksempel på boost-boks i Roblox Studio
Eksempel på boost-melding på skjermen

Boost-boks i Workspace

Boost-melding på skjermen

👩‍💻 Koden du lager i dette systemet

Legg denne i LocalScript under TextLabel (i ScreenGui).

local textLabel = script.Parent
local Players = game:GetService("Players")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

local boostFolder = workspace:WaitForChild("BoostBoxes")

-- Settings
local BOOST_SPEED = 32
local BOOST_JUMPPOWER = 150
local BOOST_DURATION = 2

-- Defaults
local NORMAL_SPEED = humanoid.WalkSpeed
local NORMAL_JUMPPOWER = humanoid.JumpPower

-- Debounce to prevent retrigger spam
local boostActive = false

-- Shared boost logic
local function applyBoost()
	if boostActive then return end
	boostActive = true

	-- UI
	textLabel.Visible = true
	textLabel.Text = "You get speed and jump boost for 2 seconds!"
	task.delay(3, function()
		textLabel.Visible = false
	end)

	-- Apply boost
	humanoid.UseJumpPower = true
	humanoid.WalkSpeed = BOOST_SPEED
	humanoid.JumpPower = BOOST_JUMPPOWER

	-- Reset
	task.delay(BOOST_DURATION, function()
		if humanoid then
			humanoid.WalkSpeed = NORMAL_SPEED
			humanoid.JumpPower = NORMAL_JUMPPOWER
		end
		boostActive = false
	end)
end

-- Connect all boost boxes
local function connectBoostBox(box)
	box.Touched:Connect(function(hit)
		if hit.Parent == character then
			applyBoost()
		end
	end)
end

-- Existing boxes
for _, box in ipairs(boostFolder:GetChildren()) do
	if box:IsA("BasePart") then
		connectBoostBox(box)
	end
end

-- Future boxes added at runtime
boostFolder.ChildAdded:Connect(function(box)
	if box:IsA("BasePart") then
		connectBoostBox(box)
	end
end)

🧩 Hvordan fungerer koden (i riktig rekkefølge)

  1. Finn spilleren med Players: Vi henter Players.LocalPlayer fordi UI og boost bare gjelder for "meg".
  2. Vent til figuren er klar med WaitForChild: character = player.Character or player.CharacterAdded:Wait() og Humanoid må finnes før vi endrer fart/hopp.
  3. Finn "BoostBoxes"-mappen i Workspace: workspace:WaitForChild("BoostBoxes") sikrer at delen er lastet. Husk Anchored=true, CanCollide=false, CanTouch=true, og gjennomsiktighet.
  4. Lytt etter berøring med Touched (Event): Når noe treffer boksen, sjekker vi if hit.Parent == character for å være sikre på at det er vår spiller.
  5. Vis melding på skjermen (UI): Vi setter textLabel.Visible = true og endrer Text for å forklare boosten. Skjules etter task.delay(3, ...).
  6. Gi midlertidig kraft (Humanoid-egenskaper): Vi bruker UseJumpPower = true, setter WalkSpeed og JumpPower til boost-verdier, men lagrer normalverdiene først.
  7. Tilbakestill etter tid med task.delay: Etter BOOST_DURATION settes WalkSpeed og JumpPower tilbake slik at spillet føles rettferdig.

🧪 Mini-oppgaver

  • Gjør meldingen norsk og legg til en emoji (🎉).
  • Lag en ny boks som bare gir ekstra fart — ikke hopp.
  • Endre BOOST_DURATION til 5 sek og observer.
  • Endre Size/Plassering på boksen for å lage en "boost-port".

🚀 Videreutvikling

  • Legg til debounce (en boolean som låser boosten i 2 sek).
  • Resett ved CharacterAdded (når spilleren respawner).
  • Bytt til ProximityPrompt for mer bevisst aktivering.
  • Lag en nedtelling i UI (2…1…0) med task.spawn eller RunService.Heartbeat.

🛠️ Feilsøking

"boostBox is not a valid member of Workspace"
Sjekk at delen heter boostBox (samme store/små bokstaver), og at den ligger i Workspace — ikke inni en annen modell.
Boost utløses ikke: Sørg for Anchored=true, CanTouch=true, og at spilleren faktisk passerer gjennom boksen.
Hopp endrer seg ikke: Sett humanoid.UseJumpPower = true. Noen prosjekter bruker JumpHeight i stedet for JumpPower.
🏠 Tilbake til Roblox Oversikt