🎯 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
-
Sett inn en Part i Workspace (rotnivå).
Gi den navnet:
boostBoxAnchored:
true(så den ikke faller)CanCollide:
false(spilleren kan gå gjennom)CanTouch:
true(må være på for atTouchedskal 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).
- (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
- StarterGui, trykk på + → ScreenGui (f.eks. navn BoostUI).
-
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
-
Høyreklikk TextLabel → LocalScript.
Lim inn koden under. Denne kjører på spillerens maskin, styrer UI og leser av Humanoid.
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)
-
Finn spilleren med Players:
Vi henter
Players.LocalPlayerfordi UI og boost bare gjelder for "meg". -
Vent til figuren er klar med WaitForChild:
character = player.Character or player.CharacterAdded:Wait()ogHumanoidmå finnes før vi endrer fart/hopp. -
Finn "BoostBoxes"-mappen i Workspace:
workspace:WaitForChild("BoostBoxes")sikrer at delen er lastet. HuskAnchored=true,CanCollide=false,CanTouch=true, og gjennomsiktighet. -
Lytt etter berøring med Touched (Event):
Når noe treffer boksen, sjekker vi
if hit.Parent == characterfor å være sikre på at det er vår spiller. -
Vis melding på skjermen (UI):
Vi setter
textLabel.Visible = trueog endrerTextfor å forklare boosten. Skjules ettertask.delay(3, ...). -
Gi midlertidig kraft (Humanoid-egenskaper):
Vi bruker
UseJumpPower = true, setterWalkSpeedogJumpPowertil boost-verdier, men lagrer normalverdiene først. -
Tilbakestill etter tid med task.delay:
Etter
BOOST_DURATIONsettesWalkSpeedogJumpPowertilbake 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_DURATIONtil 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
ProximityPromptfor mer bevisst aktivering. - Lag en nedtelling i UI (2…1…0) med
task.spawnellerRunService.Heartbeat.
🛠️ Feilsøking
"boostBox is not a valid member of Workspace"
Sjekk at delen heter
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.