Praktyka pętli - tworzenie pętli czasowej

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Ten projekt jest kolejnym przykładem używania dla pętli w praktyczny sposób. Dla tego mostu gracze będą dotykać przycisku, aby uczynić most przejściowy na czas ograniczony przed jego zniknięciem. Aby stworzyć kalendarz i pokazać pozostały czas dla gracza, będziesz używał dla pętli.

Ustawienie projektu

Ten most może być włączony do dowolnego projektu gry z wykorzystaniem zadań opartych na ruchu, takich jak obby.

Tworzenie części

  1. Znajdź miejsce na zbudowanie mostu, jak rzeka lub duża lukę w obby. Stwórz trzy zakotwiczone części, takie jak poniżej.

    • Wyświetlacz liczników
    • Most
    • Przycisk橋
  2. Gdy nieaktywne, most będzie półprzezroczysty. Aby to zrobić, wybierz Most i zmień jego właściwości.

    • Przezroczystość = 0.8
    • Możliwość kolidyki = Fałszywy

Utworzenie ekranu kalendarza

Podczas przechodzenia przez most, gracze będą musieli zobaczyć, ile sekund pozostało przed tym, jak most zniknie. Jeden sposób na wyświetlenie obrazów lub tekstu jest poprzez dodanie obiektu nazyjącego się aż powierzchniowy interfejs użytkownika do części. aż powierzchniowy interfejs użytkownika można również używa

  1. Wybierz TimerDisplay i dodaj Powierzchniowy GUI. Następnie, powiązany z GUI powierzchni, dodaj Etykietę tekstową.

  2. Wybierz interfejs powierzchni. W Propnościach dokonaj następujących zmian:

    • Zmień Twarz , abyś mógł zobaczyć tekstowe etykietę na froncie licznika, gdzie gracz patrzy.
  3. Wybierz tekst znakomity. W Propnościach dokonaj następujących zmian:

    • Ustaw Rozmiar na {1, 0},{1, 0} .
    • Ustaw TextScaled na prawdę.
    • Ustaw tekst , aby być pusty. tekst zostanie zaktualizowany używając skryptu.

Konfiguracja Skryptu

Teraz, gdy miejsceminutnik, stwórz skrypt, aby kontrolować most i wyświetlać licznik do liczby graczy.

  1. W części Mostu dodaj nowy skrypt o nazwie TimedBridge. W tym skrypcie stwórz następujące zmienne.


    local bridge = script.Parent
    local button = workspace.ButtonBridge
    local timerText = workspace.TimerDisplay.SurfaceGui.TextLabel
    -- Jak długo most będzie się utrzymywał solidnie
    local timerDuration = 5

Kodowanie interakcji dotykowej

Aby użyć mostu, będziesz musiał utworzyć dwa funkcje. Jeden funkcji sprawi, że most będzie chodzić i wyświetlać timer. Druga funkcja będzie słuchać, czy gracz dotyka przycisku, który aktywuje most.

  1. Utwórz nową funkcję o nazwie startTimer() z print statement w środku. Będziesz używać print statement, aby testować swój kod.


    local timerDuration = 5
    local function startTimer()
    print("Countdown started")
    end
  2. Zakoduj funkcję nazwę buttonPressed() , aby sprawdzić, czy humanoid dotyka przycisku. Funkcja powinna akceptować parametr partTouched i następnie mieć pustą if statement, jeśli zostanie wykryty humanoid w tej części.


    local function startTimer()
    print("Countdown started")
    end
    local function buttonPressed(partTouched)
    local character = partTouched.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    end
    end
  3. Aby uruchomić licznik, w if oświadczeniu, wezwij funkcję startTimer().


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
  4. Pod koniec buttonPressed() połącz funkcję buttonPressed() z wydarzeniem Touched przycisku.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
    button.Touched:Connect(buttonPressed)
  5. Zacznij projekt. Dotknij części i sprawdź okno Wyjście, aby zobaczyć drukowanie oświadczenia.

Wskazówki dotyczące rozwiązywania problemów

W tym momencie, jeśli most nie działa tak, jak zamiast tego, spróbuj jednej z poniższych opcji. Problem : Wiadomość błędu mówiąca: "... is not a valid member of workspace" .

  • W skrypcie TimedBridge sprawdź, czy wszystkie części są poprawnie wpisane, jak są widoczne w Explorerze. Problem : Nie można zobaczyć części.

  • Upewnij się, że wszystkie trzy części są zaczepione.

  • Sprawdź właściwość Przezroczystości dla mostu.

Tworzenie kalendarza

Kiedy gracze krok po kroku przechodzą przez most, startTimer() uczyni most chodalnym i uruchdza timer. Gdy timer osiągnie 0, most stanie się niechodzalny, powodując, że każdy, kto nie jest szybki wystarczająco, upadek.

Uczynienie Mostu Przechodziącego

Aby rozpoczynać, skrypt będzie musiał uczynić most solidnym lub staczalnym, a następnie uruchomić timer, dopóki nie stanie się niechodzalny.

  1. Aby uczynić most przechodzalnym, w startTimer() , zmień właściwość Przezroczystości mostu na 0 (nieprzezroczysty) i właściwość Kolidowania na prawdę.


    local function startTimer()
    -- Uczynij most widoczny i przechodziwalny
    bridge.Transparency = 0
    bridge.CanCollide = true
    end
  2. Aby stworzyć kalendarz, który liczy się do góry, stwórz pętę z następującymi wartościami.

    • Zmienne sterowanie : nazywa się count , ustawiony na timerDuration .
    • Koniec : 0
    • Przychód : -1

    local function startTimer()
    -- Uczynij most widoczny i przechodziwalny
    bridge.Transparency = 0
    bridge.CanCollide = true
    for count = timerDuration, 0, -1 do
    end
    end
  3. Aby pokazać kalendarz dla graczy, zmień tekst w timerText , aby wyświetlić liczbę poprzez wpisanie timerText.Text = count . Każdym razem, gdy for pętli przechodzi przez cykl, będzie pokazywał graczom następną liczbę w kalendarzu.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    end
  4. Użyj funkcji task.wait, aby wykonać dla pętli tylko jedną wtórkę.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
  5. Zacznij gra. Gdy dotkniesz przycisku, powinien się pojawić most i rozpoczynaćliczyć, a następnie ukończ.

Zachowanie mostu od ponownego uruchomienia

Uwaga jednak, jeśli poruszasz się po przycisku, licznik będzie się resetować.

Dzieje się tak, ponieważ for pętli jest wzywany za każdym razem, gdy dotykasz przycisku i uruchamiasz for pętli od początku. Aby utrzymać licznik od uruchomienia się nieustannie, będziesz musiał dodać zmiennego typu, który będzie kontrolować, czy startTimer() może być ponownie uruchomiony. Booleans są pisane tak samo jak inne zmienne, ale zamiast używać liczb lub ciągów, można je ustawić tylko na prawdę lub fałsz. W tej sytuacji skrypt użyje boolean, aby sprawdzić, czy timer jest obecnie uruchomiony przed jego uruchomieniem.

  1. Na górze swojego skryptu, pod swoimi zmienne, stwórz zmienne nazyjące się timerActive i ustaw go na false, ponieważ nikt jeszcze nie nacisnął przycisku.


    local timerDuration = 5
    local timerActive = false
    local function startTimer()
  2. Aby upewnić się, że licznik zacznie się tylko wtedy, gdy timerActive zmiennej prawdziwości jest fałszywe, dodaj drugie warunki do if w buttonPressed() .


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and timerActive == false then
    startTimer()
    end
    end
  3. Aby zapobiec startTimer() bieżącemu przed skończeniem czasera, ustaw prawdziwym timerActive na true.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. W funkcji startTimer() po węzłu, ustaw połączenie na jego oryginalne właściwości poprzez zmianę przejrzystości węzła na 0,8 i możliwość kolidywania z falą.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
    -- Dla pętli, która liczy się od czasu odliczania timerDuration
    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
    -- Nie pozwól, aby most był przechodni
    bridge.Transparency = 0.8
    bridge.CanCollide = false
    end
  5. Ostatnią rzeczą do zresetowania moста jest zmiana timerText na pustą strungę, taką jak była pierwotnie. Następnie ustaw timerActive na false.


    bridge.Transparency = 0.8
    bridge.CanCollide = false
    timerText.Text = ""
    timerActive = false
  6. Zagrajtestuj i sprawdź, aby upewnić się, że most może być używany wiele razy.

Ukończ skrypt mostu czasowego


local bridge = script.Parent
-- Dostarcza przycisk, gdy jest wpisany w Explorerze
local button = workspace.ButtonBridge
-- Dostarcza część do wyświetlenia
local timerPart = workspace.TimerDisplay
-- Dostarcza tekst, który wyświetli licznik
local timerText = timerPart.SurfaceGui.TextLabel
-- Ile graczy musi przejść przez most
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Countdown started")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- Dla pętli, która liczy się od czasu odliczania timerDuration
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Nie pozwól, aby most był przechodni
bridge.Transparency = 0.8
bridge.CanCollide = false
timerText.Text = ""
timerActive = false
end
local function buttonPressed(partTouched)
local character = partTouched.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
print("part touched")
if humanoid and timerActive == false then
print("starting timer")
startTimer()
end
end
button.Touched:Connect(buttonPressed)

Podsumowanie

Pętle można łączyć z różnymi sposobami interakcji, aby stworzyć zabawne chwile w grze. W tym samouczniku utworzony jest czasowy most używając kryształka, który funkcjonuje jako licznik. Podczas licznika gracze otrzymują ograniczony czas, aby przejść.