‫W tym wykładzie będziemy tworzyć kontroler gracza, który otrzyma informację, że gra
‫została zakończona z trybu gry i stworzy to zachowanie ponownego uruchamiania, które po 5 sekundach
‫przeładuje poziom po śmierci gracza.
‫Zanurzmy się i zobaczmy, jak to się robi.
‫Więc kiedy gra się skończy, musimy powiadomić kontroler gracza, a także musimy mieć kontroler gracza w
‫naszym C++, abyśmy mogli zaimplementować zachowanie pozwalające nam zrestartować poziom i tak dalej.
‫Więc pierwszą rzeczą do zrobienia jest to, że kiedy ten punkt zostanie zabity, po pierwsze, logujemy się na oślep.
‫Chcemy sprawdzić, czy gra się skończyła.
‫Teraz są dwa scenariusze.
‫W jednym wygrywamy, a w drugim przegrywamy.
‫Przegrana jest pierwszą, z którą się zmierzę, ponieważ jest najłatwiejsza.
‫Jeśli zabitym pionkiem jest gracz, którego przegrywasz, to wszystko.
‫Możesz zdecydować się na wiele żyć w różnych iteracjach tego trybu gry, ale nie zamierzam tego
‫robić.
‫Po prostu będę miał jedno życie.
‫Jeśli umrzesz, gra skończona.
‫Możesz chcieć zrestartować.
‫Jak więc sprawdzić, czy ten pionek jest kontrolerem gracza?
‫Cóż, to całkiem proste.
‫Możemy po prostu wykonać rzut, aby wykonać rzut na kontroler gracza i zabitego pionka.
‫A potem, jeśli to nie jest null.
‫Weźmy więc wskazówkę.
‫Wskaźnik kontroli gracza w górę nazywamy go kontrolerem gracza i zapisuje wynik tego wskaźnika tutaj.
‫I powiemy w zasadzie, jeśli to nie jest nie.
‫Więc jeśli kontroler gracza nie jest pustym wskaźnikiem, wiemy, że to gracz zginął i że dla niego
‫gra jest skończona.
‫Więc to, co chcemy zrobić, to wywołać tę metodę kontrolera gracza.
‫Już wspomnieliśmy o tym, że istnieje metoda zakończona grą.
‫Przyjrzyjmy się temu.
‫Jeśli wykonamy kontrolkę P i spojrzymy na kropkę kontrolera gracza i możemy poszukać zakończenia gry.
‫Widać na pewno, że istnieje tutaj wirtualna metoda o nazwie gra się skończyła i widać, że jest
‫skupiony na zakończeniu gry.
‫Na jakim aktorze powinniśmy się w końcu skupić?
‫Gra domyślnie jest to zero punktów i prawdopodobnie tego zamierzam użyć.
‫A potem powiemy, czy to zwycięzca?
‫Zasadniczo musisz pozwolić graczowi kontrolować i wiedzieć, czy wygrał, czy nie.
‫I to jest całkiem proste, powiedzmy, w tym przypadku.
‫Nie, nie.
‫Więc zrobimy, że gra ze strzałkami kontrolera gry się zakończyła, a następnie ustawię zerowy wskaźnik na skupieniu się na
‫końcowej grze, ponieważ tak naprawdę nie potrzebujemy tej funkcji, a wtedy jest zwycięzcą.
‫To po prostu będzie fałszywe.
‫To nie jest zwycięski kontroler gracza, ponieważ to ten, który właśnie umarł.
‫Więc nadszedł czas na małe wyzwanie do wdrożenia.
‫Gra zakończyła się w kontrolerze gry.
‫Oznacza to, że musimy stworzyć kontroler odtwarzacza C++, stworzyć jego podklasę blueprint, odrodzić tę podklasę blueprint
‫domyślnie z naszego trybu gry, a następnie chcesz przejść dalej i nadpisać.
‫Gra się skończyła i umieściłem tam wiadomość dziennika, aby sprawdzić, czy rzeczywiście otrzymujemy.
‫Ta gra zakończyła się we właściwym czasie.
‫Wstrzymaj, wideo i spróbuj.
‫Dobra.
‫Witamy spowrotem.
‫Tak więc, krok pierwszy, stwórz ten kontroler odtwarzacza C++, stwórz nową klasę C++.
‫Następnie idź i poszukaj zobaczmy, kontroler gracza.
‫Następnie nazwiemy to kontrolerem strzelanki.
‫Śmiało i stwórz tę klasę.
‫Gdy to zrobimy, chcemy przejść do naszych planów i stworzyć klasę planów, która będzie na nich oparta.
‫Więc chcemy kontrolera gracza strzelającego jako takiej podstawy i nazwiemy go BP, kontroler
‫gracza strzelającego z podkreśleniem.
‫Obecnie nie jest to naprawdę potrzebne, ale później będziemy chcieli podłączyć niektóre zasoby interfejsu
‫użytkownika do kontrolera gracza.
‫Więc będziemy mieć to gotowe.
‫Następnie przejdziemy do trybu gry BP KML i zadokujemy go, ponieważ chcemy zmienić domyślną klasę kontrolera
‫gracza z kontrolera gracza na nasz BPM, kontroler gracza w szkolnej strzelance.
‫Fajny.
‫Następnie chcemy nadpisać.
‫Nasza gra się skończyła.
‫Zobaczmy więc, czy przejdziemy do kontroli gracza do h.
‫Widzimy, że jest to w sekcji publicznej.
‫Oto podpis.
‫Skopiujmy to.
‫Przejdź do kropki kontrolera gry strzelanki i stwórz publiczność.
‫Do tej wirtualnej pustki gra się skończyła.
‫Fajnie i już musimy to zmienić, ponieważ to było wyraźnie zastępowane skądś.
‫A potem możemy zrobić to, co możemy zrobić i wdrożyć.
‫Control shift p chcemy to nazwać super pamiętać.
‫I chcemy, żeby gra się tak skończyła.
‫A my chcemy przejść w końcowej fazie gry, a B jest zwycięzcą, a następnie chcemy się zalogować.
‫Więc logujesz się.
‫On jest tam moim makro.
‫Skończyliśmy.
‫To będzie wiadomość dziennika wychodząca na końcu.
‫Więc skompilujmy i zobaczmy, czy to działa.
‫Przejdę do dziennika wyjściowego.
‫Hit play.
‫Idź i daj się zabić, w zasadzie.
‫Zdrowie spada powoli.
‫A potem powinniśmy zobaczyć wiadomość.
‫Czy otrzymujemy wiadomość?
‫Nie.
‫Więc spójrzmy.
‫Jaki jest tutaj kontroler gracza?
‫Wygląda na to, że kontroler odtwarzacza strzelającego z podkreśleniem BP jest poprawny.
‫Zakończyła się gra nadrzędna.
‫Teraz widzę błąd.
‫To jest coś, co niektórzy z was mogli zauważyć i
‫krzyczeli na ekran, że tutaj mamy kontroler gracza, do którego rzucamy, i myli mnie to
‫z rzeczywistym pionkiem gracza.
‫Więc to, co chcemy tutaj zrobić, to powiedzieć, że zdobądź kontrolera zabitego pionka.
‫Więc pionek zabity kropka dostaje błąd kontrolera.
‫Więc strzałka dostaje kontroler, a następnie chcemy ją rzucić na kontroler gracza.
‫A jeśli to nie ma wartości, to powinno działać.
‫Więc chodźmy dalej i wypróbujmy to.
‫Śmiało i włącz odtwarzanie.
‫Castle znowu zginął.
‫I tym razem też nie dostajemy żadnej wiadomości.
‫I tym razem z subtelnego powodu.
‫To dlatego, że odłączamy się od kontrolera.
‫Zanim nazwiemy to -- zabity.
‫Więc kiedy próbuje zdobyć kontrolującego pionka, to właściwie nie, nie ma już kontrolującego pionka.
‫Więc musimy zrobić to powiadomienie tuż przed odłączeniem od kontrolera.
‫Obejmuje to przesuwanie się w górę linii, która obejmuje nasz tryb gry.
‫Myślę, że to nie miałoby znaczenia, ale teraz, kiedy naprawdę o tym myślę, tak, oczywiście, że ma.
‫Przejdźmy więc do naszego poziomu i zagrajmy.
‫Chodźmy i dajmy się zastrzelić.
‫A kiedy to zrobisz, możesz zobaczyć, że skończyliśmy, zostaje wydrukowany tak, jak chcemy.
‫Po drodze mieliśmy więc kilka czkawek.
‫To nie twoja wina, jeśli nie dostałeś tego w wyzwaniu.
‫Do tego momentu zrobiłeś wszystko inne.
‫To wspaniale.
‫Miejmy więc nadzieję, że może próbowałeś to debugować, ale nie martw się, jeśli utkniesz na tych rzeczach.
‫Ostatnią rzeczą, jaką chciałem tutaj zrobić, jest ponowne uruchomienie gry na zegarze.
‫Teraz sposób, w jaki możemy to zrobić, jest dość prosty, ponieważ kontroler gracza faktycznie ma metodę
‫restartu.
‫Więc jeśli pójdziemy i przyjrzymy się temu, powinien to być poziom restartu.
‫To jest ten, do którego chcemy zadzwonić i chcemy to zrobić na zegarze.
‫Więc używaliśmy timerów wcześniej do powtarzania rzeczy, ale możemy również użyć ich tylko do opóźnienia akcji o
‫określoną wartość.
‫Przejdę więc do gracza strzelającego, kontrolera, kropki H i stworzę tutaj prywatną posiadłość.
‫Prywatna może być Twoją własnością, którą możesz edytować w dowolnym miejscu.
‫Unosić się.
‫To będzie opóźnienie restartu.
‫Możesz już zobaczyć, dlaczego potrzebujemy już podstawy projektu.
‫Dam mu 5/2 opóźnienie.
‫Następnie przejdę do C++ i będziemy chcieli zrobić dobry licznik czasu, menedżer liczników.
‫I wtedy możemy to zrobić.
‫Następnie musimy uwzględnić.
‫Więc hasz to i będzie to menedżer czasowy kropka H.
‫Wtedy powinniśmy być w stanie użyć operatora kropki, ponieważ zwracany tutaj typ jest referencją
‫i będziemy robić ustawiony timer.
‫I tutaj musimy przekazać uchwyt timera.
‫Więc w sekcji prywatnej chodźmy i stwórzmy jeden zestaw.
‫Może to być uchwyt timera f.
‫Nazwę to zegarem restartu.
‫Więc to będzie uchwyt, który przekażemy do naszego ustawionego timera.
‫Następną rzeczą, której potrzebujemy w piątej sygnaturze, jest posiadanie obiektu, który chcemy wywołać, czyli
‫właśnie to.
‫A potem myślę, że powinna to być sama metoda.
‫Możemy to zrobić, robiąc znak ampersand.
‫I jest to właściwie metoda, metoda poziomu restartu, którą chcemy wywołać, która została
‫zdefiniowana w kontrolerze odtwarzacza A.
‫A więc kontroler gracza.
‫Dwukropek, poziom ponownego uruchomienia okrężnicy.
‫A potem wystarczy podać opóźnienie, które już zdefiniowaliśmy jako opóźnienie restartu.
‫Więc zrób to, ale średnik na końcu i miejmy nadzieję, że powinniśmy się zrestartować po 5
‫sekundach.
‫Teraz trochę ułatwimy testowanie, otwierając nasz karabin i czyniąc go trochę
‫bardziej śmiercionośnym.
‫Więc przejdę do ustawień domyślnych, zadam obrażenia na poziomie 50.
‫Więc daj się zabić dwoma strzałami.
‫Chodźmy grać.
‫Daj się zabić szybko.
‫A potem po 5 sekundach, miejmy nadzieję, powinniśmy zrestartować poziom, który zrestartowaliśmy i jesteśmy z powrotem na poziomie.
‫Więc nasz zegar działa zgodnie z oczekiwaniami.
‫Teraz w późniejszych wersjach zobaczysz, że zamiast restartować, zobaczysz komunikat o błędzie, który wygląda tak i mówi
‫o niepowodzeniu podróży i mówi coś o tym, że czytałeś letnią piaskownicę, bla
‫bla bla.
‫Cóż, sposób, w jaki musimy obejść ten problem, gdy próbujemy ponownie uruchomić i chcemy sprawdzić,
‫czy nasz restart działa, polega na tym, że przechodzimy do naszego menu kropka, kropka, kropka zamiast menu odtwarzania i
‫musimy grać jako samodzielna gra.
‫Jeśli grasz w samodzielną grę, uruchomienie zajmie trochę więcej czasu, ale ponowne uruchomienie będzie
‫działać zgodnie z oczekiwaniami i zobaczymy, że poziom zostanie ponownie załadowany.
‫Oczywiście nic nie wskazuje na to, że tak się stanie.
‫Więc przyjrzymy się interfejsowi użytkownika w następnych wykładach.
‫Zobaczę cię tam.