‫Dobra.
‫Tak więc naszym celem w tym filmie jest wprowadzenie śmierci dla naszych Pons.
‫Więc jeśli zostanę trafiony kilka razy z naszej wieży, zobaczysz, że zniknąłem, ponieważ mój czołg
‫zginął.
‫A jeśli będę wystarczająco uzdolniony, jeśli zdołam pójść dalej i zniszczyć jednego z nich, zobaczysz, że on również
‫zniknie.
‫Więc zamierzamy wprowadzić śmierć dla tych pionków w tym filmie.
‫Witam ponownie.
‫Teraz już zadajemy obrażenia pionkom, gdy trafiają w nie pociski.
‫Musimy teraz wymyślić, jak sobie poradzimy po śmierci.
‫Oznacza to, że będziemy potrzebować jakiejś funkcji, aby poradzić sobie ze zniszczeniem konkretnego aktora.
‫Więc stworzymy funkcję niszczenia uchwytu.
‫Potrzebujemy również kości aktora do działania, co może pozwolić trybowi gry poradzić sobie z tym, co dzieje się,
‫gdy aktor w naszym świecie umrze i będziemy nazywać tę funkcję zmarłego aktora, gdy wartość zdrowia osiągnie
‫zero dla konkretnego pionka.
‫Porozmawiajmy więc o trochę mapie drogowej dotyczącej tego, jak zamierzamy zaimplementować ten system.
‫Wiemy, że mamy pocisk i woła on zadawanie obrażeń, a to powoduje, że funkcja
‫przyjmująca obrażenia odpowiada na transmisję delegata w komponencie zdrowia.
‫Więc musimy dowiedzieć się, co zrobić z tego miejsca.
‫Cóż, nasz tryb gry może mieć funkcję do obsługi, gdy aktor umiera.
‫Tak więc w otrzymanych obrażeniach możemy sprawdzić, czy zdrowie osiągnie zero.
‫I w tym momencie możemy wywołać funkcję zmarłego aktora w trybie gry i stamtąd nasz pionek poradzi sobie
‫z jego zniszczeniem.
‫Tak więc ostatecznie od trybu gry będzie zależeć wywołanie funkcji niszczenia uchwytu na zmarłym
‫aktorze.
‫Mamy więc trochę planu gry, więc nakreślmy kroki, które należy podjąć, aby to wdrożyć.
‫Najpierw stworzymy funkcję niszczenia uchwytów i umieścimy ją w podstawowej klasie pionków, aby poradzić
‫sobie z funkcjonalnością, która powinna się wydarzyć, gdy którykolwiek z naszych pionków zginie.
‫Zaimplementujemy to również w klasach czołgów i wież, ponieważ każda z nich będzie miała swoją
‫własną unikalną funkcjonalność po śmierci, a następnie stworzymy funkcję zmarłego aktora i umieścimy ją w
‫klasie trybu gry, abyśmy mogli wywołać zniszczenie uchwytu stamtąd.
‫Następnie wywołamy funkcję obsługi zniszczenia w funkcji zgon aktora w trybie gry, a następnie
‫możemy wywołać śmierć aktora z komponentu zdrowia, gdy zdrowie osiągnie zero.
‫Zacznijmy więc od naszego pierwszego kroku tworzenia funkcji niszczenia uchwytu.
‫Więc jestem tutaj w Base Pond H i chciałbym dodać tę funkcję niszczenia uchwytu.
‫Teraz planuję wywołać to z trybu gry, co oznacza, że będzie to musiała być funkcja
‫publiczna, więc mogę umieścić tę funkcję tutaj, w sekcji publicznej.
‫To będzie nieważne i będę to nazywać radzenie sobie ze zniszczeniem.
‫Teraz nie musi przyjmować żadnych parametrów wejściowych.
‫Po prostu zajmie się zniszczeniem tego konkretnego pionka.
‫Zaimplementujmy więc tę funkcję w pliku bazowym pionka CP i umieszczę ją tutaj pod
‫konstruktorem.
‫Więc mam do czynienia z destrukcją i zamierzam umieścić nazwę klasy bazowego pionka tuż przed nazwą
‫funkcji.
‫Teraz to będą rzeczy, które się wydarzą, gdy któryś z pionków opartych na pionku podstawowym zginie.
‫Umieszczę więc tutaj a do zrobienia, które mówi, co zamierzamy zrobić w funkcji niszczenia uchwytu.
‫Chciałbym zająć się tutaj wszystkimi efektami wizualnymi i dźwiękowymi, które mają związek z umieraniem pionka.
‫Więc powiem tylko wizualne efekty dźwiękowe ukośnika i zostawimy to na tym, a pamiętajmy
‫o zaimplementowaniu tego, kiedy dojdziemy do efektów specjalnych i dźwięków w tej części
‫kursu.
‫Teraz mamy tu obsługę niszczenia, ale chciałbym również umieścić funkcję niszczenia uchwytów zarówno w klasach czołgów, jak
‫i wież, aby poradzić sobie z tym, co się stanie, gdy te pionki zginą.
‫A najprostsza realizacja zniszczenia będzie prawdopodobnie dotyczyła naszej wieży.
‫Przejdźmy więc do Wieży H i dodamy tutaj funkcję publiczną zwaną zniszczeniem uchwytu.
‫Powiem więc void handle destroy, że zaimplementuję to i wieżę CP tuż pod funkcją
‫tick.
‫Więc tutaj jest haczyk, tutaj jest zniszczenie uchwytu i zamierzam poprzedzić nazwę funkcji taką
‫wieżą.
‫Teraz w funkcji niszczenia uchwytów dla wieży chciałbym wywołać wersję super, aby wywołać zniszczenie uchwytu
‫w pionku bazy i uzyskać te efekty wizualne i dźwiękowe, gdy wieża zginie.
‫Więc powiem super uchwyt destrukcji, aby upewnić się, że to zostanie wywołane.
‫A potem po prostu zniszczę wieżę.
‫Teraz widzieliśmy, jak to działa.
‫Po prostu wywołujemy funkcję zniszczenia, a to zajmie się zniszczeniem wieży.
‫Więc mogę to zapisać i zamknąć pliki wieży i CP, a teraz mogę umieścić funkcję zniszczenia
‫uchwytu w klasie czołgu.
‫Przejdę więc do tank i zadeklaruję tutaj funkcję publiczną pod funkcją tick, zwaną
‫handlem destrukcją.
‫I zamierzam przejść do Tank CP i zaimplementować to tuż pod tikiem tutaj, nie zapominając o
‫poprzedzeniu nazwy funkcji z tankiem.
‫Teraz, tak jak w klasie tower, chcielibyśmy nazwać zniszczeniem super uchwytu.
‫W ten sposób uzyskamy efekty wizualne i dźwiękowe.
‫Teraz, jeśli chodzi o czołg, zrobimy coś nieco innego.
‫Wolałbym raczej schować czołg niż go zniszczyć.
‫A potem możemy wyłączyć jego funkcjonalność TIC, aby nadal istniał na świecie, a my nadal go posiadaliśmy.
‫Więc nadal mamy ten widok z kamery.
‫Tylko, że nie będziemy mogli go zobaczyć ani przenieść.
‫Aby ukryć zbiornik, możemy wywołać funkcję o nazwie set actor ukrytą w grze, a to zajmie wartość logiczną.
‫A jeśli zdamy się na prawdę to skutecznie ukryjemy zbiornik.
‫Teraz chciałbym również wyłączyć zaznaczanie i jest do tego funkcja.
‫Nazywa się to ustawieniem aktora włączonym.
‫A do tego podam false, co wyłączy tykanie zbiornika.
‫Tak więc dbamy o naszą funkcję niszczenia uchwytu.
‫Więc mamy naszą funkcję niszczenia uchwytu.
‫Naszym kolejnym krokiem jest stworzenie funkcji zmarłego aktora w trybie gry.
‫Więc zaimplementujmy to.
‫Więc jestem tutaj w trybie dostrajania czołgów i tutaj mogę stworzyć funkcję zmarłego aktora, teraz planuję nazwać zmarłego aktora
‫z klasy komponentu zdrowia, co oznacza, że musi to być również funkcja publiczna.
‫Więc zamierzam dodać sekcję publiczną i stworzyć funkcję zmarłego aktora.
‫Teraz to będzie nieważne i zamierzam nazwać to śmiercią aktora.
‫I to może po prostu wziąć wskaźnik aktora o nazwie Dead Actor, a teraz możemy zaimplementować zmarłego aktora w trybie gry
‫z czołgami tuningowymi.
‫CP Umieszczę to tutaj i poprzedzi nazwę trybem dostrajania czołgów, a teraz mamy funkcję
‫śmierci aktora.
‫Teraz chciałbym sprawdzić, czy martwy aktor to czołg, co oznacza, że będę potrzebować zmiennej
‫dla czołgu.
‫Wróćmy więc do trybu gry z czołgami.
‫Stworzę sekcję prywatną i dodam zmienną zbiornika, którą zamierzam zadeklarować
‫dalej.
‫Jest to wskaźnik zbiornika typu A i po prostu zadzwonię do tego zbiornika i będę musiał zainicjować
‫go adresem stawu zbiornika, i mogę to zrobić i zacząć grać.
‫Teraz widzieliśmy, że rozpoczęcie gry jest funkcją chronioną i zamierzamy ją chronić tutaj w trybie
‫gry, abyśmy mogli nadpisać, rozpocząć, grać.
‫Więc powiem wirtualna pustka, zacznij, graj, zastąp i mogę to zaimplementować tutaj w tuningu czołgów, w trybie
‫gry.
‫Tak.
‫Więc to będzie void rozpocząć grę i zamierzam użyć czołgów tuningowych, nazwy klasy trybu gry.
‫A pierwszą rzeczą, którą zamierzam zrobić, to wywołać super rozpoczęcie gry.
‫W ten sposób otrzymujemy funkcjonalność rodzica i mogę zdobyć pionka gracza za pomocą statystyk gry.
‫Więc zamierzam najpierw uwzględnić statystyki rozgrywki, a to jest w statystykach rozgrywki kismet slash, jak
‫już widzieliśmy.
‫I tutaj mogę wziąć Tanka i przypisać mu wartość statyki rozgrywki młodzieżowej.
‫Dłoń gitarzysty.
‫Teraz, to bierze obiekt kontekstu światowego, do którego możemy to wykorzystać, i zamierzam użyć zero jako
‫indeksu gracza, ponieważ nasz czołg zawsze będzie zerem gracza.
‫Teraz wiemy, że odtwarzacz odrzutowy -- zwraca wskaźnik A -- i czołg jest typu czołgu, klasy potomnej.
‫Widzieliśmy, że musimy rzucić na to klasę czołgu, jeśli chcemy zapisać ten wynik we wskaźniku czołgu
‫A.
‫Więc najpierw dołączę nagłówek zbiornika.
‫Więc powiem, że włącz czołg H, a potem zarzucę do czołgu.
‫Więc powiem rzucanie na tank i rzucam wartość zwróconą przez get player --.
‫Więc umieszczę to w nawiasach.
‫A teraz będziemy mieli wskaźnik do gracza -- w postaci wskaźnika czołgu A.
‫Więc teraz, gdy mamy zbiornik, możemy sprawdzić, czy nasz martwy aktor jest zbiornikiem.
‫Możemy więc powiedzieć, że jeśli martwy aktor podwójny równa się zbiornikowi, teraz zbiornik może być zerowy.
‫I to jest w porządku, ponieważ jeśli Tank jest pusty, a aktor jest martwy, odnosi się do samego zbiornika, wtedy sprawdzenie if zakończy się
‫niepowodzeniem i tak naprawdę nie będziemy próbować uzyskać dostępu do wskaźnika zerowego, ponieważ nie dostaniemy się do
‫jego wnętrza.
‫Teraz, jeśli martwy aktor jest w rzeczywistości czołgiem, chciałbym wywołać funkcję zniszczenia uchwytu czołgu.
‫Więc nazwiemy zniszczenie uchwytu czołgu.
‫Teraz, po wywołaniu funkcji niszczenia uchwytu, chciałbym również wyłączyć wejście dla zbiornika zbiornika,
‫abym mógł pobrać zbiornik i wywołać wbudowaną funkcję, którą zbiornik dziedziczy, zwaną disable input.
‫Teraz wyłączenie wejścia wymaga kontrolera odtwarzacza A.
‫Teraz wiemy, że klasa czołgu, jeśli wejdziemy tutaj do zbiornika H, ma tę zmienną ref kontrolera gracza,
‫która jest wskaźnikiem do kontrolera gracza, dlatego zaczynam myśleć, że ref to bardzo okropna nazwa
‫dla tej zmiennej .
‫Ponieważ nie jest to odniesienie, jest wskaźnikiem.
‫Prawie wolałbym nazwać to kontrolerem gracza czołgiem.
‫Więc właściwie, dlaczego nie zmienimy nazwy?
‫To jest coś, co programiści często robią, gdy zdają sobie sprawę, że nadali zmiennej, złą nazwę.
‫Więc ten kod ma na to łatwy sposób.
‫Mogę podświetlić tę zmienną i nacisnąć klawisz F dwa i prosi mnie o zmianę nazwy.
‫Zadzwonię do tego kontrolera czołgu.
‫Teraz sprawdź to.
‫Tutaj nazywa się Tank Player Controller.
‫Jeśli pójdę do Tank CP, zobaczę, że tutaj również zmieniono jego nazwę.
‫Więc nie musiałem wchodzić i szukać go i znajdować każdą instancję odtwarzacza, kontrolera, ref.
‫Mogę wyszukać kontroler gracza czołgu i zobaczyć, że jest on zmieniony wszędzie tam, gdzie jest używany.
‫Więc to fajna umiejętność refaktoryzacji.
‫W każdym razie, wracając tutaj, w trybie dostrajania czołgów, muszę wyłączyć wejście dla czołgu, a to
‫wymaga kontrolera gracza.
‫Więc najpierw sprawdzę, czy kontroler gracza czołgiem jest prawidłowy, mówiąc, czy czołg i muszę uzyskać
‫dostęp do tego kontrolera gracza.
‫Ale pamiętaj, że w tanku nasza zmienna kontrolera gracza jest prywatna.
‫Teraz moglibyśmy to ujawnić i upublicznić, lub moglibyśmy utworzyć publiczną funkcję pobierającą dla tej zmiennej.
‫Wolałbym zrobić publiczny getter, ponieważ jest to lepsza praktyka programistyczna.
‫Więc tutaj, w sekcji publicznej, stworzę publiczny getter dla kontrolera czołgu.
‫Teraz zwróci wskaźnik kontrolera gracza A i ta funkcja będzie się nazywać
‫get tank player.
‫Pobieracze kontrolerów to zazwyczaj nazwa zmiennej z get na początku, a także zwykle są one kosztem,
‫ponieważ ta funkcja nie jest zaprojektowana do zmiany czegokolwiek w tej klasie, zwróci tylko
‫kontroler gracza.
‫Więc powiemy, że zwróć kontroler czołgu i to wszystko, co zamierza zrobić.
‫Więc teraz, gdy mamy publiczną funkcję pobierającą dla kontrolera gracza czołgu, możemy uzyskać dostęp do
‫kontrolera gracza tutaj z poziomu trybu gry.
‫Więc powiemy, czy tank dostanie kontroler gracza czołgu i wywoła tę funkcję tutaj.
‫A jeśli dotrzemy do wnętrza tej instrukcji, to kontroler gracza jest prawidłowy,
‫więc możemy przenieść to wywołanie do wejścia wyłączającego czołg tutaj i przejdziemy do wyłączonego wejścia kontrolera
‫czołgu.
‫Więc tutaj też nazwiemy tanka, aby dostać kontroler gracza.
‫Teraz, gdy uzyskujemy dostęp do kontrolera gracza, chciałbym również, aby kontrolery gracza
‫pokazywały zmienną logiczną kursora myszy i ustawiły to na wartość false.
‫Wyłączamy więc wprowadzanie danych i upewniamy się, że kursor myszy nie jest wyświetlany.
‫Więc to zajmuje się obsługą funkcjonalności na wypadek śmierci czołgu.
‫Teraz, jeśli martwy aktor nie jest czołgiem, chciałbym sprawdzić, czy jest to instancja
‫klasy tower.
‫Więc dodam jeszcze jeden, jeśli tutaj.
‫Więc jaki będzie warunek dla tego elsejeśli tutaj?
‫Cóż, chciałbym zobaczyć, czy martwego aktora można obsadzić w wieży A, co oznacza, że będę musiał
‫uwzględnić klasę wieży.
‫Więc włącz wieżę.
‫A potem spróbuję rzucić.
‫Więc powiem rzut, który bierze pod uwagę nawiasy kątowe i nawiasy.
‫Rzucamy też wieżę, a to, co rzucamy, jest martwe.
‫Aktor spróbuje obsadzić martwego aktora.
‫Teraz możemy wziąć wynik tego rzutowania, przypisać go i utworzyć zmienną lokalną.
‫Tutaj w trybie warunkowym możemy powiedzieć wskaźnik na wieżę i możemy nazwać tę zniszczoną wieżę i przypisać jej wartość
‫zwróconą z tego rzutowania.
‫A jeśli to zrobimy, to mamy dostęp do tego zniszczonego aktora, który jest naszym martwym aktorem rzuconym na
‫wieżę.
‫Teraz, jeśli to się powiedzie, przejdziemy do wnętrza elseif.
‫A potem możemy zabrać nasze zniszczone.
‫Wieżę i możemy po prostu wywołać zniszczenie uchwytu.
‫Więc teraz mamy tutaj funkcję śmierci aktora w trybie gry, która wywołuje zniszczenie, a także obsługuje
‫trochę więcej funkcji związanych ze śmiercią dla czołgu.
‫Więc to zajmuje się krokiem drugim.
‫Tworząc funkcję zmarłego aktora, a kiedy to robiliśmy, nazwaliśmy również funkcję zniszczenia uchwytu w funkcji
‫śmierci aktora.
‫Więc naszym ostatnim krokiem jest wezwanie aktora do śmierci, gdy zdrowie osiągnie zero.
‫Teraz, aby wywołać tę funkcję, która istnieje w trybie gry, nasz komponent zdrowia będzie potrzebował
‫zmiennej, która przechowuje adres trybu gry.
‫Przejdźmy więc do naszej klasy komponentów zdrowotnych.
‫Oto składniki zdrowia, a dodam tutaj zmienną prywatną na samym dole.
‫Będzie to wskaźnik trybu gry w tuning czołgów typu A, który nazwiemy trybem gry w tuning czołgów.
‫Teraz zamierzam to zadeklarować dalej, więc nie muszę tutaj dołączać jego pliku nagłówkowego, a następnie musimy uzyskać
‫dostęp do trybu gry.
‫Przejdźmy więc do komponentu zdrowia CP i jeśli przewinę w górę, widzę tutaj funkcję rozpoczęcia gry i jest to idealne
‫miejsce, aby zapoznać się z trybem gry.
‫Ponownie, umieszczenie go w konstruktorze jest za wcześnie.
‫Zanim spróbujemy uzyskać do niego dostęp, musimy upewnić się, że tryb gry został skonstruowany i istnieje.
‫Oto przydatna funkcja na statystyce gry o nazwie Pobierz tryb gry, która zwraca bieżącą bazę trybu gry
‫lub null, jeśli nie można jej pobrać, tak jak na kliencie.
‫Teraz klient ma do czynienia z programowaniem dla wielu graczy i nie musimy się tym martwić.
‫Działamy na jedynej maszynie do naszej gry, więc przewińmy w dół i zobaczymy, że baza
‫trybu gry przyjmuje obiekt kontekstu świata.
‫To tylko obiekt na świecie, a widzieliśmy, jak radzić sobie z obiektami kontekstu świata.
‫Tak więc istnieje to w statycznym h rozgrywki, więc weźmy to.
‫A tutaj, w komponentach zdrowia, CP wklei nasz dodatek do statystyki rozgrywki, a następnie wywołamy tutaj
‫tryb gry i zaczniemy grać.
‫Więc powiemy, dostrojenie czołgów, tryb gry.
‫I ustaw to na wartość ciebie.
‫Statystyki rozgrywki otrzymują tryb gry i obiekt kontekstu świata.
‫Przejdę do tego i teraz mamy tryb gry.
‫Ale oczywiście zdobądź tryb gry, zwróć bazę trybu gry i próbujemy przechowywać ją w
‫klasie potomnej, trybie dostrajania czołgów, co oznacza, że będziemy musieli rzucać.
‫Zgadza się.
‫Musimy więc powiedzieć, że rzucamy do trybu gry dostrajanie czołgów i rzucamy wynik z trybu gry.
‫Więc umieszczę to w nawiasach.
‫I używamy trybu gry dostrajanie czołgów.
‫Więc zamierzam dołączyć ten plik nagłówkowy na górze.
‫Więc powiem, że zawiera.
‫Dostosuj tryb gry Tanks.
‫Więc mamy tryb gry tutaj w komponencie zdrowia.
‫Jesteśmy gotowi, aby zejść tutaj do otrzymanych obrażeń i sprawdzić, czy nasze zdrowie osiągnęło zero.
‫W takim przypadku możemy użyć naszego wskaźnika trybu gry dostrajanie czołgów, aby wywołać funkcję, którą aktor zmarł,
‫przechodząc do aktora, który zginął, a to będzie twoje wyzwanie, więc w klasie komponentu zdrowia w
‫otrzymanych obrażeniach sprawdzisz, aby zobaczyć jeśli wartość zdrowia osiągnęła zero lub spadła poniżej zera.
‫Jeśli tak jest, to aktor zginął w trybie gry.
‫Ponieważ mamy wskaźnik do trybu gry, nie zapomnij najpierw sprawdzić, czy ten wskaźnik nie jest
‫pusty.
‫A kiedy zadzwonisz do zmarłego aktora, będziesz musiał przekazać aktora.
‫Przekażesz zmarłego aktora.
‫Zatrzymaj więc wideo i zaimplementuj to teraz w funkcji obrażeń odniesionych.
‫Dobra.
‫Więc już odjęliśmy obrażenia od zdrowia.
‫Jesteśmy teraz gotowi, aby sprawdzić, czy ta wartość zdrowia osiągnęła zero.
‫Więc powiem, czy zdrowie jest mniejsze lub równe zero F, a jeśli tak, to należy
‫zadzwonić.
‫Aktor zmarł teraz, ponieważ musimy sprawdzić, czy tryb gry jest prawidłowy.
‫Mogę w tym miejscu umieścić reklamę, jeśli sprawdź i sprawdź, czy tryb gry dostrajanie czołgów jest prawidłowy.
‫Jeśli ma wartość null, zwróci tutaj wartość false i nie dotrzemy do wnętrza instrukcji if.
‫Jeśli więc dotrzemy do wnętrza instrukcji if, tryb gry tune tank jest ważny, a zdrowie osiągnęło
‫zero.
‫Więc możemy powiedzieć, dostrojenie czołgów, tryb gry.
‫I możemy nazwać zmarłego aktora.
‫A to wymaga aktora i wiemy, że aktor, który zmarł, będzie aktorem uszkodzonym.
‫Więc przejdziemy do uszkodzonego aktora.
‫A teraz możemy to skompilować i spojrzeć na tamto.
‫Mamy udaną kompilację.
‫Wróćmy więc do edytora.
‫A tutaj w edytorze, dlaczego nie przetestujemy śmierci?
‫Zobaczmy, czy uda mi się zniszczyć niektóre z tych czołgów, zanim sam zostanę zniszczony.
‫To będzie wyzwanie.
‫Och, jest jeden.
‫Zabiłem jednego z nich, a drugiego dostałem.
‫Och, i umarłem.
‫Widać więc, że ta gra jest o wiele fajniejsza teraz, gdy dodaliśmy śmierć i zniszczenie do naszych stawów.
‫Więc to jest świetne.
‫Ok, więc chcę, żebyś mocno poklepał się po plecach, ponieważ w tym filmie zajmowaliśmy się
‫śmiercią aktora, co wiąże się z sporą interakcją między tymi klasami w naszej grze.
‫Teraz sposób realizacji śmierci polega na tym, że staw po prostu znika, co oznacza, że wciąż potrzebujemy kilku
‫rzeczy.
‫Potrzebujemy warunków wygranej przegranej.
‫Potrzebujemy sposobu, aby pokazać graczowi, że wygrał lub przegrał grę.
‫Potrzebujemy też tych efektów specjalnych.
‫Potrzebujemy dźwięków, potrzebujemy eksplozji.
‫Te rzeczy nadejdą bardzo, bardzo szybko.
‫Więc gratulacje.
‫Przebyłeś już długą drogę i zostało już tylko kilka kroków.
‫Do zobaczenia w następnym filmie.