Praktyka parametrów - przyciski

*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.

Przyciski mogą być używane przez graczy do odblokowania nowych obszarów, przyznawania punktów i ujawniania skarbów.Za każdym razem, gdy gracz dotknie przycisku, powinien dać jakieś informacje zwrotne, aby gracze wiedzieli, że jest z nim interakowany, takie jak zmiana kolorów lub wydawanie dźwięków.

W tym przykładzie przycisk zostanie wykorzystany do aktywacji mostu.Gdy przycisk zostanie naciśnięty, stanie się zielony, a gracze będą mogli korzystać z mostu.Jeśli gracz nie naciśnie przycisku, spadnie przez most, gdy spróbuje na nim chodzić.

Zrób most

Zacznij od skonfigurowania mostu.

  1. Stwórz obszar w grze, w którym gracze będą potrzebować mostu.

  2. Stwórz część dla mostu i zmień nazwę na Most.

  3. Wybierz most w oknie Właściwości:

    • Zmień Przezroczystość na .5. Dla przejrzystości 0 jest widoczne, 1 jest niewidoczne.
    • Sprawdź Kotwicę .
    • Odznacz Możliwość kolizji .
  4. Przetestuj gra, most powinien wyglądać mgliście, a ludzie nie powinni jeszcze potrafić po nim chodzić.

Stwórz przycisk

Teraz, gdy most został skonfigurowany, stwórz przycisk.

  1. Utwórz nową część o nazwie Przycisk.
  2. Zmień kolor przycisku na czerwony.
  3. Zakotwórz przycisk.
  4. Przesuń przycisk, aby był lekko unoszony i nie dotykał niczego. Chodzi o to, aby upewnić się, że wydarzenie Touched nie strzela przypadkowo.

Zrób przycisk interaktywnym

Tym razem zamiast używać wydarzenia Touched do tworzenia pułapki, użyjesz go do tworzenia przycisku, który czyni most używalnym.Aby most był zderzalny, użyj kodu bridge.CanCollide = true w ramach niestandardowej funkcji, która uruchamia się, gdy gracz dotknie przycisku.Wiesz wszystko, czego potrzebujesz, aby ukończyć następujące kroki.

Spróbuj samodzielnie to rozwiązać, zanim spojrzysz na rozwiązanie kodowe.

  1. Włóż nowy skrypt do przycisku o nazwie Aktywuj most.
  2. Usuń Hello World .
  3. Utwórz zmienne dla mostu i dla przycisku.
  4. Stwórz funkcję lokalną , która wykonuje następujące działanie po dotknięciu przycisku:
    • Wydrukuje "button touched" .
    • Zmiana koloru przycisku z czerwonego na zielony po dotknięciu.
    • Zmiana przejrzystości mostu do 0, aby go zobaczyć.
    • Sprawia, że most jest używalny za pomocą kodu bridge.CanCollide = true
  5. Połącz funkcję z wydarzeniem przycisku Touched.
  6. Przetestuj skrypt i upewnij się, że most pojawi się, gdy przycisk zostanie dotknięty.

Rozwiązanie kodowe Poniżej jest jedno możliwe rozwiązanie kodowe


-- Włóż ten skrypt do przycisku
-- Zakręca przyciskiem zielonym, gdy coś dotyka przycisku.
local button = script.Parent
local bridge = workspace.Bridge
local function buttonPressed()
print("button touched")
button.Color = Color3.fromRGB(0, 170, 0)
bridge.Transparency = 0
bridge.CanCollide = true
end
button.Touched:Connect(buttonPressed)

Rozwiąż problem z kodem

Problem: Most jest już solidny, gdy gra się rozpoczyna.: Upewnij się, że części są zakotwiczone i nie dotykają nic.Części mogą dotknąć czegoś, takiego jak teren lub inna część, i spowodować, że funkcja buttonPressed() wystrzeli przypadkowo. Problem: Otrzymujesz błąd w oknie wyjściowym mówiący: "Most nie jest ważnym członkiem przestrzeni roboczej" Sprawdź obserwuje:

  • Nazwa twojego mostu. Most w twoim skrypcie musi być nazwany dokładnie tak, jak w Explorerze.
  • To part.Touched:Connect(buttonPressed) jest poza funkcją buttonPressed().

Opcjonalne wyzwanie kodowe

Skrypt w tej lekcji może być również używany do utrzymywania drzwi, które utrzymują graczy poza określonymi obszarami. Praktykuj swoje umiejętności kodowania i zrób obserwuje:

  • Stwórz część drzwi.
  • Utwórz przycisk dalej od drzwi.
  • Zmień skrypt w tej lekcji, aby drzwi zmieniły przejrzystość i tak gracz nie może z nimi zderzyć.

Twoja wersja może wyglądać tak:


local button = script.Parent
-- Przypomnienie: Zastąp nazwę części, bramy, nazwą w projekcie
local gate = workspace.Gate
local function buttonPressed()
print("button touched")
-- Zmiana przycisku na czerwony, aby dać graczowi opiniezwrotne
button.BrickColor = BrickColor.Red() -- ZMIEŃ TO
-- Uczyń bramę niewidoczną
gate.Transparency = 1
-- Sprawia, że gracz może przejść przez bramę
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)