Po utworzeniu tabeli liderów gracze potrzebują czegoś do zebrania.Aby to zrobić, musisz stworzyć przedmiot 3D, który gracze znajdą w świecie.Poniżej jest wideo procesu zbierania przedmiotów przez graczy.
Zbuduj przedmiot
Przedmioty w doświadczeniu są modelami 3D, które gracze używają narzędzia do zbierania.Każdy przedmiot, po zebraniu, znika, a następnie pojawia się po ograniczonej ilości czasu.
Dla przedmiotu, odwołaj się do dokumentu projektu gry. Ta seria wykorzystuje kryształy jako przykład.
Stwórz obiekt, korzystając z części lub obiektów znalezionych przez zaufanych użytkowników na rynku.
Jeśli chcesz, pobierz część kryształową za pomocą tego łącza. Aby ją dodać, kliknij prawym przyciskiem myszy na przestrzeni roboczej i wybierz Wstaw z pliku .
Jeśli używasz własnej części, połącz wszystkie części w model .Jednym ze sposobów zrobienia tego jest wybranie wszystkich elementów, kliknięcie prawym przyciskiem myszy na części i wybranie Grupy .Tworzy to model, który organizuje twoje części.
Upewnij się, że wszystkie części są zakotwiczone .
Więc przedmioty nie mogą być zbierane, gdy znikają, stwórz Wartość Boola o nazwie CanHarvest, aby śledzić jego status.
W właściwościach dla CanHarvest sprawdź pasek Wartość . Sprawdzenie pudełka wartości czyni prawdziwym boolean, co oznacza, że gracze mogą zbierać przedmiot.
Stwórz narzędzie
Gracze potrzebują czegoś w rodzaju siekiery lub łopaty, aby zebrać przedmioty.W Roblox przedmioty, które gracze mogą wyposażyć i używać, nazywane są narzędziami .Ta lekcja wykorzystuje narzędzie startowe ze wszystkimi częściami i animacją, która została już wykonana i możesz ją dostosować później.

Dodaj narzędzie
Aby gracze mogli korzystać z narzędzia startowego, pobierz i umieść je w pakiecie startowym.
W Explorer, w sekcji Przestrzeń robocza, kliknij prawym przyciskiem myszy na StarterPack. Następnie wybierz Wklej z pliku .
Wybierz pobrany plik, starterTool.rbxm .
Przetestuj swój projekt.Gracze powinni być wyposażeni w narzędzie tak szybko, jak tylko rozpoczynać.W grze naciśnij 1, aby wyposażyć lub schować narzędzie.Kliknij lewym przyciskiem myszy, aby je skręcić.
Zakoduj narzędzie
Jeśli narzędzie uderzy w zbieralny obiekt, a gracz ma wystarczająco dużo miejsca w swojej torbie, liczba przedmiotów gracza wzrośnie o 1 na liście liderów.Zbieranie przedmiotu sprawia, że znika na kilka sekund i staje się niedostępne na kilka sekund przed ponownym pojawieniem się.Zachęca to graczy do odkrywania, aby znaleźć więcej przedmiotów, zamiast po prostu kliknąć ten sam przedmiot.
Ustaw skrypt
Na tym etapie dodaj skrypt do narzędzia. Ten skrypt obsługuje to, co dzieje się, gdy narzędzie dotyka obiektu do zbierania.
W pakiecie startowym, pod narzędziem startowym, dodaj nowy skrypt o nazwie ToolScript.
W skrypcie napisz komentarz opisowy na górze, a następnie utwórz zmienne, aby przechować część narzędzia i samo narzędzie.
-- Daje graczom przedmiot, gdy dotkną zbieralnej częścilocal tool = script.Parentlocal toolPart = tool.Handle
Sprawdź przedmioty
Zawsze, gdy narzędzie dotknie obiektu, sprawdza, czy obiekt ten ma w środku CanHarvest i czy zmienna boolean jest ustawiona na Prawdę.
Stwórz nową funkcję o nazwie onTouch() z parametrem o nazwie partTouched.
local tool = script.Parentlocal toolPart = tool.Handlelocal function onTouch(partTouched)endW tej funkcji utwórz lokalną zmienną o nazwie canHarvest.Następnie użyj funkcji FindFirstChild(), aby sprawdzić, czy istnieje CanHarvest boolean w rodzicu tej części.
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")endTeraz skrypt musi sprawdzić, czy rzeczywiście znaleziono coś i jeśli tak, uruchom kod.Aby to zrobić, utwórz oświadczenie if, w którym warunek jest canHarvest.Jeśli coś istnieje w canHarvest, to oświadczenie ocenia się na prawdę.
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")if canHarvest thenendendW oświadczeniu if dodaj oświadczenie o wydruku, aby sprawdzić, czy skrypt działa. Możesz skodować logikę do zbierania przedmiotów po tym, jak będziesz pewien, że działa.
if canHarvest then-- Używany do testowania, czy kod działaprint("Found an item")endPod oświadczeniem funkcji end, dodaj toolPart.Touched:Connect(onTouch).To pozwala skrypcie sprawdzić, czy coś dotyka narzędzia (lub w tym przypadku jego uchwytu) i jeśli tak, to wywołuje onTouch().
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")if canHarvest thenprint("Found an item")endendtoolPart.Touched:Connect(onTouch)Odtwórz projekt i użyj narzędzia na przedmiocie zbieralnym (lewy klik, aby się poruszyć). Upewnij się, że zobaczysz w oknie Wyjście wiadomość "Znaleziono przedmiot" w oknie Wyjście.
Wskazówki dotyczące rozwiązywania problemów
Jeśli nie widzisz wiadomość, spróbuj następujących wskazówek.
- Jeśli używasz niestandardowych części i siatek, można wystąpić błąd.Skrypt działa tylko wtedy, gdy obiekt CanHarvest jest dzieckiem części, której narzędzie dotyka.
- Upewnij się, że narzędzie jest w pakiecie startowym, a nie w przestrzeni roboczej.
- Sprawdź, czy część jest zakotwiczone.
Zdobądź statystyki gracza
Zanim zwiększy się przedmioty gracza, narzędzie musi znaleźć lokalizację tego, ile przedmiotów ma gracz w rankingtego gracza.Gdy narzędzie uzyska dostęp do ranking, może zmienić liczbę przedmiotów danego gracza.
Najpierw uzyskaj gracza za pomocą narzędzia. W ToolScript, pod local item = toolitem i nad niestandardową funkcją, wpisywać:
local item = toolitemlocal backpack = tool.Parentlocal player = backpack.Parentlocal function onTouch(partTouched)Na następnej linii znajdź statystyki lidera gracza za pomocą funkcji FindFirstChild().
local backpack = tool.Parentlocal player = backpack.Parentlocal playerStats = player:FindFirstChild("leaderstats")local function onTouch(partTouched)Poniżej local playerStats, utwórz zmienne, aby przechować statystyki przedmiotów i przestrzeni
local playerStats = player:FindFirstChild("leaderstats")local playerItems = playerStats:FindFirstChild("Items")local playerSpaces = playerStats:FindFirstChild("Spaces")
Sprawdź, czy można zebrać obiekt
Teraz, gdy skrypt narzędzia ma zmienne playerItems i playerSpaces utworzone, możesz zacząć dawać graczom przedmiot.Użyj funkcji utworzonej, aby sprawdzić, czy obiekt, który dotyka narzędzia, może zostać zebrany, a czy gracz ma wystarczająco dużo miejsca w torbie, aby zwiększyć przedmioty wyświetlane na tablicy wyników o jeden.
Skrypt będzie potrzebował oświadczenia if z dwoma warunkami do spełnienia.Zacznij od utworzenia oświadczenia if, następnie dodaj następujące warunki, połączone z kluczowym słowem and.
- canHarvest.Value == true
- playerItems.Value < playerSpaces.Value
local function onTouch(partTouched)local canHarvest = partTouched.Parent:FindFirstChild("CanHarvest")if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenendendendW samej deklaracji if dodaj do przedmiotów gracza, wpisując playerItems.Value += 1.
if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1endendOdtwórz swój projekt; wykorzystaj narzędzie, aby zebrać przedmiot, i sprawdź, czy liczba przedmiotów wzrosła.
Zresetuj przedmiot
Gdy przedmiot zostanie zebrany, zostanie zresetowany na dwa sposoby:
- Przedmiot zniknie i nie będzie interaktywny
- CanHarvest ustawione na fałsz
Przedmiot wróci do normy po krótkim czasie.W ten sposób gracze otrzymują tylko jeden przedmiot za każde zbieranie i muszą poszukać więcej, gdy oryginalne zostaną zresetowane.
Pod miejscem, gdzie dodawane są przedmioty, ustaw canHarvest na fałsz.Poprzez ustawienie wartości canHarvest fałsz tak szybko, jak tylko gracze zbiorą przedmiot, skrypt nie da więcej niż jednego przedmiotu na każde trafienie narzędzia.
if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falseendendPo ustawieniu wartości na fałsz ustaw przejrzystość części na 1 (niewidzialną) i CanCollide na fałsz, co oznacza, że gracze nie mogą go dotknąć.
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falseendWpisz task.wait(5), aby dać czas na zresetowanie przedmiotu. 5 to sugerowana liczba, a może się różnić przez długość, jaką chcesz dla swojego doświadczenia.
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falsetask.wait(5)endPo oczekiwaniu zrób odwrotnie od poprzedniego kodu, ustawiając CanHarvest na prawdę i odnowiając przejrzystość i możliwość kolizji do ich oryginalnych wartości.
task.wait(5)canHarvest.Value = truepartTouched.Transparency = 0partTouched.CanCollide = trueendOdtwórz projekt i sprawdzać:
- Gracz otrzymuje tylko 1 przedmiot za zebranie przedmiotu.
- Przedmiot znika, a następnie pojawia się po upływie pięciu sekund.
Wskazówki dotyczące rozwiązywania problemów
W tym momencie, jeśli jedna z kontroli nie zdała, wypróbuj jedną z poniższych.
- Sprawdź, czy przejrzystość i CanCollide są właściwie wymówione i dużą literą.
- Upewnij się, że używasz canHarvest.Value, a nie canHarvest = true.
Ukończ skrypt narzędziowy
Zakończona wersja skryptu może być odwołana poniżej.
local toolPart = script.Parent
local tool = toolPart.Parent
local backpack = tool.Parent
local player = backpack.Parent
local playerStats = player:FindFirstChild("leaderstats")
local playerItems = playerStats:FindFirstChild("Items")
local playerSpaces = playerStats:FindFirstChild("Spaces")
local function onTouch(partTouched)
local canHarvest = partTouched:FindFirstChild("CanHarvest")
if canHarvest then
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
playerItems.Value += 1
canHarvest.Value = false
-- Zresetuj partTouched, zebrany przedmiot
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Przywróć zebrany przedmiot i ponownie go użyj
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)