Przyciski mogą być używane przez graczy do odblokowywania nowych obszarów, przyznawania punktów i odsłaniania skarbów. Kiedy gracz dotknie przycisku, powinno to dać jakieś informacje zwrotne, aby gracze wiedzieli, że jest on aktywowany, na przykład zmieniając kolory lub wydając dźwięki.
W tym przykładzie przycisk będzie używany do aktywowania mostu. Po naciśnięciu przycisku, zmieni on kolor na zielony, a gracze będą mogli korzystać z mostu. Jeśli gracz nie nacisnął przycisku, wówczas spadnie przez most, gdy spróbuje po nim przejść.
Zbuduj most
Na początku ustaw most.
Utwórz obszar w swoim środowisku, w którym gracze będą potrzebować mostu.
Utwórz część dla mostu i zmień jej nazwę na Most.
Wybierz most, w oknie Właściwości:
- Zmień Przezroczystość na .5. Dla Przezroczystości, 0 jest widoczne, 1 jest niewidoczne.
- Zaznacz Zakotwiczony.
- Odznacz Można kolidować.
Gdy przetestujesz doświadczenie, most powinien wyglądać na mglisty i ludzie nie powinni móc po nim przechodzić.

Utwórz przycisk
Teraz, gdy most jest już ustawiony, utwórz przycisk.
Utwórz nową część o nazwie Przycisk.
Zmień kolor przycisku na czerwony.
Zakotwicz przycisk.
Przesuń przycisk, aby lekko unosił się i nie dotykał niczego. To zapewni, że zdarzenie Dotknięcie nie zostanie przypadkowo wywołane.

Uczyń przycisk interaktywnym
Tym razem, zamiast używać zdarzenia Class.BasePart.Dotknięcie|Dotknięcie do stworzenia pułapki, wykorzystasz je do stworzenia przycisku, który uczyni most używalnym. Aby most mógł kolidować, użyj kodu bridge.CanCollide = true w ramach niestandardowej funkcji, która zostanie uruchomiona, gdy gracz dotknie przycisku. Wiesz wszystko, co potrzebujesz, aby ukończyć następujące kroki.
Spróbuj samodzielnie rozwiązać to zadanie, zanim spojrzysz na rozwiązanie kodu.
- Wstaw nowy skrypt do przycisku o nazwie AktywujMost.
- Usuń Hello World.
- Utwórz zmienne dla mostu i dla przycisku.
- Utwórz lokalną funkcję, która robi to, co następuje, gdy przycisk jest dotknięty:
- Wydrukuj "przycisk dotknięty".
- Zmień kolor przycisku z czerwonego na zielony, gdy jest dotknięty.
- Zmień przezroczystość mostu na 0, aby go uczynić widocznym.
- Spraw, aby most był używalny, używając kodu bridge.CanCollide = true
- Podłącz funkcję do zdarzenia Dotknięcie przycisku.
- Przetestuj skrypt i upewnij się, że most pojawia się, gdy przycisk jest dotknięty.
Rozwiązanie kodu Poniżej znajduje się jedno z możliwych rozwiązań kodu.
-- Wstaw ten skrypt do przycisku
-- Zmienia kolor przycisku na zielony, gdy coś dotknie przycisku.
local button = script.Parent
local bridge = workspace.Bridge
local function buttonPressed()
print("przycisk dotknięty")
button.Color = Color3.fromRGB(0, 170, 0)
bridge.Transparency = 0
bridge.CanCollide = true
end
button.Touched:Connect(buttonPressed)
Rozwiązywanie problemów z kodem
Problem: Most jest już solidny, gdy doświadczenie się zaczyna. Upewnij się, że części są zakotwiczone i nie dotykają niczego. Części mogą dotykać czegoś, jak teren lub inna część, co może spowodować przypadkowe wywołanie funkcji buttonPressed().
Problem: Otrzymujesz błąd w oknie Wyjściowym mówiący: "Most nie jest prawidłowym członkiem Workspace" Sprawdź następujące:
- Nazwę swojego mostu. Most w twoim skrypcie musi być nazwany dokładnie tak, jak w Eksploratorze.
- Czy part.Touched:Connect(buttonPressed) jest poza funkcją buttonPressed().
Opcjonalne wyzwanie kodowe
Skrypt w tej lekcji może być również użyty do utrzymania drzwi, które blokują graczy przed dostępem do określonych obszarów. Ćwicz swoje umiejętności kodowania i zrób to:
- Stwórz część drzwi.
- Stwórz przycisk dalej od drzwi.
- Zmień skrypt w tej lekcji, aby sprawił, że drzwi zmienią przezroczystość i aby gracz nie mógł kolidować z nimi.
Twoja wersja może wyglądać mniej więcej tak:
local button = script.Parent
-- Przypomnienie: Zmień nazwę części, Brama, na tę w swoim projekcie
local gate = workspace.Gate
local function buttonPressed()
print("przycisk dotknięty")
-- Zmienia przycisk na czerwony, aby dać informację zwrotną graczowi
button.BrickColor = BrickColor.Red() -- ZMIEN O TO
-- Sprawia, że brama staje się niewidoczna
gate.Transparency = 1
-- Sprawia, że gracz może przejść przez bramę
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)