‫Witam ponownie.
‫Teraz stworzyliśmy już naszą klasę pocisków i jesteśmy gotowi, aby zacząć odradzać te rzeczy
‫na poziomie, abyśmy mogli wystrzelić je na wieże i ostatecznie je zniszczyć.
‫Teraz odradzanie aktorów będzie obejmować funkcję aktora odradzania.
‫Więc dowiemy się, jak to działa w tym filmie.
‫Porozmawiajmy teraz o spawnowaniu pocisku.
‫To jest coś, co chcielibyśmy zrobić od strony C++.
‫Wywołamy funkcje C++, aby dynamicznie tworzyć nowe obiekty w świecie.
‫Teraz odradzamy się od strony C++, ale chcielibyśmy stworzyć obiekt oparty na planie naszej
‫klasy pocisku.
‫Powodem jest to, że mamy plan oparty na klasie A Projectile C++, która zawiera
‫dodatkowe informacje.
‫W szczególności ma zestaw właściwości siatki.
‫Wybraliśmy siatkę dla naszego statycznego komponentu siatki.
‫Więc nie możemy po prostu odrodzić wersji C++.
‫Musimy odrodzić wersję schematu, aby uzyskać tę siatkę.
‫Więc pytanie brzmi, jak stworzyć obiekt w C++, który jest oparty na planie?
‫Cóż, dowiemy się czegoś, co nazywa się podklasą PT, a teraz jest to szablon.
‫Podobnie jak wiele szablonów, nawiasy kątowe będą wymagały typu.
‫Tak więc użycie podklasy PT wymaga parametru typu.
‫A to pozwala nam mieć zmienną, która przechowuje coś, co nazywa się klasą U.
‫Klasa U reprezentuje typ klasy, ale ma również możliwość interakcji z nierealnym systemem odbić
‫silnika.
‫Kiedy mówię o refleksji, mam na myśli wymianę informacji między stroną C++ a stroną projektu.
‫Podklasa PT, jak sama nazwa wskazuje, pozwala nam przechowywać zmienną reprezentującą klasę opartą na
‫przekazywanym typie lub podklasę tego wybranego typu.
‫Oznacza to, że możemy wybrać typ, a podklasa t może zawierać klasę u, która reprezentuje ten typ lub dowolny typ
‫od niego pochodny.
‫Obejmuje to plany oparte na typie.
‫Zobaczmy więc, jak działa ta podklasa rzeczy.
‫Dobra.
‫Wróciłem więc tutaj w pompie bazowej, a powodem, dla którego jestem w kapsule bazowej, jest to, że chcemy, aby ten pocisk
‫był zarówno w klasie czołgu, jak i wieży.
‫Obie te klasy będą odradzać pociski.
‫Więc chciałbym tutaj podklasę zmiennej t.
‫Więc powiem podklasę t, aw nawiasach ostrych musimy podać typ.
‫Teraz możemy zadeklarować dalej nawet wewnątrz nawiasów ostrych w ten sposób.
‫I zrobię z tego typu pocisk.
‫Powodem jest to, że stworzyliśmy klasę pocisków, a jej typem jest pocisk.
‫Stworzę więc tę zmienną i nazwę ją klasą pocisku.
‫Teraz pozwoli nam to mieć zmienną C++, która reprezentuje typ klasy, a typ może być
‫oparty na pocisku, nawet opartym na tym typie klasy.
‫Teraz dam mu własność U.
‫A ponieważ chciałbym móc to edytować, przynajmniej w domyślnym planie, ustawię tę
‫edycję jako domyślną.
‫Dopiero teraz możemy nadać temu kategorię.
‫Umieszczę to w kategorii zwanej walką.
‫Teraz przejdźmy dalej i skompilujmy to.
‫Ok, więc wróciłem do edytora i przejdę do folderu z planami, a stamtąd
‫do folderu Pons.
‫I zamierzam tylko otworzyć BP -- tank i otworzyć pełny edytor planów.
‫Teraz, jeśli zajrzę do panelu szczegółów, mogę poszukać walki.
‫Oto jest.
‫A oto zmienna klasy pocisku.
‫To jest ta podklasa, którą nazwaliśmy klasą pocisku.
‫Teraz zauważ, że możemy to ustawić tutaj i możemy to ustawić za pomocą listy rozwijanej.
‫A jeśli klikniemy na rozwijane menu, mamy trzy opcje.
‫Możemy ustawić go na none, czyli na to, na co jest ustawiony domyślnie, co w zasadzie oznacza, że jest to wskaźnik zerowy.
‫Lub możemy ustawić go na pocisk lub pocisk BP.
‫To, co podklasa pozwala nam zrobić, to ustawić tę klasę pocisku na konkretny typ w oparciu o
‫pocisk, ponieważ jest to typ, który wybraliśmy podczas tworzenia zmiennej.
‫Teraz pocisk tutaj.
‫To jest klasa C++ zwana pociskiem w C++.
‫To pocisk, ale pocisk BP jest planem opartym na klasie pocisku C++ i możemy to
‫wybrać.
‫A teraz klasa pocisku jest ustawiona na typ pocisku BP.
‫To nie jest komponent i nie jest to obiekt pocisku BP.
‫To nie to.
‫Przechowuje typ, a dokładniej U.
‫Typ klasy.
‫I tak jak powiedziałem, twoja klasa ma wbudowaną funkcjonalność, która pozwala na pracę refleksji między C++ a
‫projektami.
‫Informacje mogą przepływać między C++ a planami.
‫Więc teraz mamy klasę pocisku, podklasę PT ustawioną na typ projektu pocisku BP.
‫Po co więc trudzić się, aby stworzyć podklasę zmiennej?
‫Cóż, musimy omówić, jak działa funkcja aktora odradzania.
‫Aktor Spawn to funkcja należąca do nowej światowej klasy.
‫Więc jeśli zdobędziemy świat, możemy zadzwonić do aktora Spawn.
‫Aktor Spawn to kolejna funkcja szablonu i jest przeznaczona do tworzenia nowych obiektów, podobnie jak tworzenie
‫domyślnych obiektów podrzędnych.
‫Ale utwórz domyślny obiekt podrzędny jest przeznaczony do tworzenia komponentów i możemy go używać tylko w konstruktorze,
‫ponieważ aktor odradzania określonej klasy może być wywoływany w czasie wykonywania, gdy gra jest uruchomiona i może tworzyć
‫aktorów.
‫Teraz jest to szablon, więc wymaga typu.
‫Jeśli chcemy wywołać pocisk, to w klasie C++ przekażemy tutaj pocisk.
‫To jest klasa C++, która jest zwracana przez funkcję aktora odradzania w C++.
‫Teraz nawiasy przyjmują szereg parametrów, w tym klasę U.
‫Teraz istnieje wiele przeciążeń tej funkcji, które przyjmują różne parametry wejściowe.
‫Być może najprostsza jest wersja, która przyjmuje klasę U, lokalizację A i rotację.
‫U.
‫Klasa reprezentuje typ do odrodzenia.
‫To jest rzeczywisty typ obiektu, który się odradza.
‫To może być plan zajęć.
‫Lokalizacja jest wektorem F, określającym, gdzie odrodzić się obiekt, a obrót określi jego obrót.
‫Przykładowa składnia wygląda tak.
‫Wywołalibyśmy aktora odradzania, określając typ klasy, a następnie przekazując informacje o klasie u wraz
‫z wektorem lokalizacji i rotatorem rotacji.
‫Porozmawiajmy więc przez chwilę o twojej klasie.
‫Teraz, jak już mówiliśmy, twoja klasa reprezentuje typ klasy.
‫Kiedy wywołujemy aktora odradzania, przekazujemy klasę U, aby dostarczyć funkcji aktora odradzania informacje
‫o obiekcie do odrodzenia.
‫Tak, przekazaliśmy typ w nawiasach ostrych, ale to po prostu mówi aktorowi Spawn, jaki typ C++ ma
‫utworzyć.
‫Podczas gdy ty klasa zawiera więcej informacji.
‫Załóżmy, że stworzyliśmy plan oparty na pocisku, a w planie ustawiliśmy pewne właściwości, takie jak
‫wybór siatki statycznej dla komponentu siatki statycznej.
‫Teraz, gdybyśmy mieli po prostu odrodzić surową klasę C++, ta statyczna siatka nie zostanie ustawiona na nowo
‫utworzonym obiekcie pocisku.
‫Zasadniczo po prostu spłodzilibyśmy niewidzialnego nowego aktora.
‫Jednak nowa zmienna klasy może reprezentować klasę projektu.
‫Twoja klasa daje nam możliwość posiadania zmiennej po stronie C++, która reprezentuje plan, typ
‫klasy i spawn.
‫Aktor może przyjąć tę klasę jako argument wejściowy, aby mógł utworzyć nowy obiekt na podstawie planu reprezentowanego
‫przez tę nową klasę.
‫Tak więc nowy pocisk będzie miał ustawioną właściwość siatki statycznej, ponieważ tworzymy nowy obiekt na
‫podstawie planu, a nie surowej klasy C++.
‫Właśnie dlatego stworzyliśmy naszą podklasę, ponieważ może przechowywać nową klasę i byliśmy w stanie ustawić ją
‫na równą pociskowi BP z naszego planu BP -- schemat czołgu.
‫Więc teraz wiesz, jak odradzać aktorów.
‫Aktor Spawn należy do nowej światowej klasy.
‫Więc jeśli wywołasz get world i po prostu wywołasz aktora Spawn, to znasz wymagania wejściowe dla
‫tej funkcji, którą przekazujesz w typie C++ w nawiasach ostrych i klasy, w której znajduje się lokalizacja i
‫obrót w nawiasach.
‫Więc dla twojego wyzwania zamierzasz odrodzić pocisk, zrób to w funkcji ognia.
‫Więc wezwij aktora, który odradza się na świecie i podaje pocisk w nawiasach kątowych.
‫Oznacza to, że będziesz musiał dołączyć plik nagłówkowy dla pocisku.
‫Więc nie zapomnij o tym i użyj naszej nowej zmiennej klasy pocisku jako parametru wejściowego klasy U w
‫nawiasach.
‫Teraz potrzebujemy lokalizacji i rotacji.
‫Punkt odrodzenia pocisku będzie używany zarówno do lokalizacji, jak i rotacji.
‫Z komponentu punktu odradzania pocisku.
‫Aby uzyskać dostęp do tych wartości, możesz wywołać polecenie pobierz lokalizację komponentu i uzyskaj obrót komponentu.
‫Więc zatrzymaj teraz wideo i zadzwoń do aktora odradzającego się w funkcji ognia.
‫Dobra.
‫Przejdźmy więc do Base Pond CP, gdzie mamy zdefiniowaną funkcję ognia.
‫Teraz narysowaliśmy tutaj sferę debugowania.
‫Tak naprawdę nie będziemy już tego potrzebować.
‫Więc zamierzam usunąć to wywołanie funkcji i zamiast tego wywołam tutaj aktora Spawn.
‫Teraz mamy już lokalizację punktu odradzania pocisków.
‫Zamierzam zmienić nazwę tej zmiennej lokalnej na po prostu lokalizację i stworzę nowy rotator F.
‫Nazywany rotacją.
‫I to również dostanę z punktu odradzania pocisków.
‫Więc będzie to punkt odrodzenia pocisku, który otrzyma obrót komponentu.
‫Więc teraz mam lokalizację i rotację, w której odradzam pocisk.
‫Więc teraz muszę zadzwonić do aktora odradzającego się, żebym mógł zadzwonić do get world.
‫A ze świata, który dostaję dzięki tej funkcji, mogę nazwać aktorem odradzania.
‫Teraz to ma nawiasy kątowe i nawiasy, prawda?
‫Więc w nawiasach kątowych muszę użyć pocisku.
‫A ponieważ używamy pocisku, musimy dołączyć do tego nagłówek.
‫Więc tutaj, usunę, narysuję pomocniki debugowania i zastąpię to pociskiem.
‫Więc teraz mamy ten typ.
‫Teraz potrzebujemy klasy U i bazując na H ma klasę pocisku, możemy użyć jej jako klasy U.
‫Więc przejdziemy do klasy pocisku.
‫Teraz wreszcie możemy przekazać lokalizację i rotację, co spełni funkcję aktora odradzania.
‫Więc chodźmy dalej i skompilujmy to, a my wrócimy do edytora i możemy przetestować grę.
‫Więc idę dalej, klikam i to sprawdzę.
‫Stworzyliśmy nowy pocisk.
‫Odradzamy pocisk na czubku naszej lufy, a one po prostu unoszą się w powietrzu,
‫co nie wygląda dobrze.
‫Ale to dobrze.
‫To jest pierwszy krok.
‫Najpierw musimy odrodzić pocisk, aby w następnym kroku działał jak pocisk.
‫Podsumowując, teraz odradzamy pociski.
‫To wielki kamień milowy.
‫Jednak nie są jeszcze całkiem pociskami.
‫Po prostu tam unoszą się i pociski mają latać w powietrzu.
‫W następnym filmie porozmawiamy o tym, jak sprawić, by nasze pociski faktycznie latały w
‫powietrzu, żeby zachowywały się jak pociski.
‫Zobaczymy się wkrótce.