‫Hej.
‫Witamy spowrotem.
‫Teraz stworzyliśmy już podstawową -- klasę C++.
‫W tym filmie zamierzamy wyprowadzić z tej klasy nową klasę potomną opartą na bazie --.
‫Porozmawiajmy więc, dlaczego chcielibyśmy zrobić coś takiego.
‫Mamy więc tę bazę -- class i wiemy, że będziemy mieć dwie różne klasy, które pochodzą od bazy
‫--.
‫Będziemy mieć nasz czołg i wieżę.
‫Teraz baza zawiera siatki, kapsułę oraz punkt odradzania.
‫I to są rzeczy, które Tank i wieża mogą odziedziczyć.
‫Ale czołg i wieża będą również miały pewne funkcje, które różnią się od siebie.
‫Po pierwsze, nasz czołg będzie się poruszał po świecie i będzie również kontrolowany przez
‫gracza.
‫Musi być więc skonfigurowany do przyjmowania danych wejściowych z klawiatury i myszy.
‫Z drugiej strony wieża po prostu tam będzie siedzieć.
‫Nie wymaga żadnych danych wejściowych od gracza, ponieważ wszystkie jego działania będą kontrolowane przez kod.
‫Tak więc, ponieważ czołg i wieża będą zachowywać się inaczej, użyjemy dziedziczenia, aby stworzyć podstawowe klasy
‫potomne -- więc możemy odziedziczyć to, co mają ze sobą wspólnego, a następnie dodać do każdej klasy te
‫cechy, które będą inne.
‫Wracamy więc do edytora i zamierzam przejść do naszych klas C++, folderu Tune Tank, w
‫którym mamy naszą bazę -- klasę i to będzie klasa, z której wywodzimy.
‫Teraz możemy kliknąć tutaj prawym przyciskiem myszy i wybrać utwórz klasę C++ wyprowadzoną z bazy --.
‫Więc wybierzmy to i pozwolę jej umieścić tę klasę w tym samym katalogu czołgów ze slashem źródłowym,
‫co w bazie --.
‫I nazwałem to czołgiem.
‫Więc nasza klasa czołgów będzie klasą dla naszego rzeczywistego czołgu -- którym kontrolujemy i poruszamy się po
‫świecie.
‫Kliknijmy więc, aby utworzyć klasę.
‫Ok, więc skompilowaliśmy i vs code otworzyło się z naszym nowym plikiem czołgu i mamy też Tank CP.
‫Teraz są całkiem nagie.
‫Tak naprawdę nic tu nie ma, ale chociaż ich nie widzimy, odziedziczyliśmy kilka rzeczy z
‫bazy -- class.
‫Mamy te komponenty, które dodaliśmy do bazy --.
‫Mimo że są to zmienne prywatne, nadal istnieją w tej klasie.
‫Więc teraz, gdy stworzyliśmy naszą klasę czołgów, porozmawiajmy o kilku rzeczach.
‫Czołg będzie potrzebował, czego wieża nie.
‫Cóż, ponieważ zamierzamy kontrolować czołg, będziemy potrzebować sposobu na skupienie się na czołgu, który
‫toczy się przez cały poziom.
‫Na tym zdjęciu jest to element aparatu.
‫To klasa C++ to twój komponent aparatu.
‫Ta czerwona linia nazywa się komponentem ramienia sprężynowego, a jego klasa C++ to komponent ramienia sprężynowego.
‫Dodanie tych elementów do -- pozwala nam oglądać -- z punktu widzenia kamery.
‫A jeśli aparat i jego sprężynowe ramię są przymocowane do -- w jakiś sposób będą podążać za
‫-- dookoła świata.
‫Teraz, wracając do edytora, jeśli wrócimy do naszego folderu -- i otworzymy BP -- tank, możemy
‫kliknąć widok, aby wszystko zobaczyć.
‫Następnie możemy wybrać kompozycję kapsuły i kliknąć dodaj i wybrać ramię sprężyny.
‫To jest element ramienia sprężynowego.
‫Wygląda jak czerwona linia.
‫Teraz, po wybraniu naszego komponentu ramienia sprężynowego, możemy dodać kolejny komponent i wybrać kamerę.
‫Teraz, gdy dodaliśmy kamerę przymocowaną do ramienia sprężynowego, mamy teraz sposób na patrzenie z
‫punktu widzenia kamery, gdy faktycznie zaczniemy kontrolować --.
‫Teraz ramię sprężynowe jest całkiem przydatne.
‫Ma tę docelową długość ramienia i jeśli ją wyregulujesz, zobaczysz, że kamera dostosowuje się wraz z ramieniem
‫sprężynowym.
‫Jest to więc sposób na kontrolowanie odległości kamery od --.
‫Są to więc zdecydowanie rzeczy, których chcemy w naszej klasie --, ale dodamy je
‫od strony C++, a nie tylko tutaj, w planie.
‫Więc zamierzam je usunąć.
‫Więc dla twojego wyzwania chciałbym, żebyś dodał kilka rzeczy do klasy czołgów.
‫Po pierwsze, potrzebujemy komponentu ramienia sprężynowego i komponentu kamery, więc utwórz te zmienne i uczyń
‫je wskaźnikami.
‫Śmiało, stwórz sekcję publiczną i prywatną i umieść te zmienne w sekcji prywatnej.
‫Teraz potrzebujemy, aby były to właściwości U, więc daj im makra właściwości i wypełnij te makra odpowiednimi
‫specyfikatorami w oparciu o to, czego nauczyłeś się w poprzednich wykładach.
‫Teraz, po utworzeniu tych zmiennych, stwórz konstruktor i umieść go w sekcji
‫publicznej i zdefiniuj w pliku CP, a następnie wewnątrz konstruktora skonstruuj nasze komponenty aparatu i ramienia sprężynowego,
‫używając domyślnego obiektu podrzędnego.
‫Upewnij się, że używasz załącznika instalacyjnego, aby dołączyć te komponenty do czegoś.
‫Chcielibyśmy, aby nasz komponent ramienia sprężynowego był dołączony do komponentu głównego.
‫Użyj więc elementu głównego i ustaw mocowanie, a dla kamery przymocuj go do ramienia sprężynowego.
‫Możesz odwołać się z powrotem do klasy podstawowej.
‫Przypomnij sobie, jak wygląda kod, aby wykonać te czynności.
‫Śmiało, zatrzymaj wideo i dodaj te rzeczy do klasy czołgów.
‫W porządku.
‫Więc jesteśmy w Tanku.
‫Teraz pierwsze rzeczy.
‫Chciałbym mieć sekcję publiczną i prywatną.
‫Tak więc sekcja prywatna będzie miejscem, w którym dodamy te dwa nowe komponenty.
‫Będziemy potrzebować komponentu ramienia sprężynowego U, który będzie wskaźnikiem i możemy nazwać to ramię sprężynowe.
‫Będziemy też potrzebować nowego komponentu kamery i nazwiemy tę kamerę.
‫W porządku.
‫Jeśli twoje imiona są nieco inne.
‫Teraz, od razu, widzę tutaj błędy IntelliSense, co oznacza, że będę musiał
‫je zadeklarować.
‫Więc zamierzam używać klasy z ramieniem sprężynowym i klasy z aparatem.
‫A teraz są to zadeklarowane do przodu.
‫Teraz potrzebujemy naszych nowych nieruchomości.
‫Dodajmy więc nowe makra właściwości.
‫A wewnątrz makra właściwości będziemy chcieli mieć pewne specyfikatory.
‫Będą one widoczne w dowolnym miejscu, ponieważ widzieliśmy, że komponenty muszą być widoczne w dowolnym miejscu,
‫abyśmy mogli dostosować ich parametry w panelu szczegółów.
‫Teraz nie widzę żadnej natychmiastowej potrzeby ekspozycji na wykres zdarzeń, więc nie sądzę, że potrzebujemy odczytu,
‫zapisu lub tylko odczytu planu.
‫W porządku.
‫Jeśli je dodałeś, teraz je pominę.
‫Nadaję im kategorię.
‫A ponieważ są to komponenty, zamierzam po prostu umieścić je w naszej kategorii komponentów razem z
‫innymi komponentami.
‫Teraz nie wystawiam ich na wykres zdarzeń, więc nie potrzebuję naszego meta zezwalającego na prywatny dostęp określonego
‫tutaj.
‫Więc to wystarczy na ramię sprężynowe i chciałbym nadać komponentowi kamery tę samą właściwość.
‫Więc kopiuję to.
‫Więc teraz mamy nasze komponenty.
‫Następną rzeczą do zrobienia jest skonstruowanie ich w konstruktorze, co oznacza, że potrzebujemy konstruktora.
‫Teraz konstruktor będzie miał taką samą nazwę jak klasa, więc jest to czołg i musimy zdefiniować ten konstruktor w
‫pliku CP.
‫Przejdźmy więc do Tank CP i stwórzmy czołg.
‫Mamy więc ciało naszej funkcji, a konstruktor zbiornika musi być poprzedzony nazwą naszej klasy i
‫operatorem rozpoznawania zakresu.
‫To są te podwójne dwukropki tutaj.
‫W ten sposób nie tylko tworzymy nową funkcję, ale definiujemy naszego konstruktora dla tej klasy.
‫Teraz chcielibyśmy skonstruować te komponenty.
‫Zacznijmy więc od ramienia sprężynowego.
‫Więc powiemy, że ramię sprężyny równa się utwórz domyślny obiekt podrzędny i będzie to komponent ramienia sprężyny u.
‫A dla tekstu po prostu nazwę tę sprężynę.
‫A dla mocowania ustawimy ramię sprężyny, ustawimy mocowanie, przechodząc w komponent główny.
‫Ale już.
‫Czekałem na to.
‫Tu jest.
‫Błąd IntelliSense mówiący, że wskaźnik do niekompletnego typu klasy używa komponentu ramienia sprężynowego.
‫Dzieje się tak, ponieważ musimy dołączyć plik nagłówkowy, ponieważ tworzymy i używamy komponentu ramienia sprężynowego.
‫Oto moja nierealna dokumentacja silnika i jeśli przewinę w dół, to mój include.
‫Więc zamierzam to skopiować i wkleić tutaj u góry, tuż pod krawędzią zbiornika.
‫Teraz, ogólnie rzecz biorąc, uwaga na marginesie, zamierzasz zachować plik nagłówka klasy zawarty
‫na górze i zawierać elementy pod spodem.
‫Więc mamy nasze ramię sprężyny.
‫Czas skonstruować kamerę.
‫Więc powiemy, że kamera tworzy domyślny obiekt podrzędny, ty komponent kamery.
‫A w makro tekstowym będę nazywał to po prostu aparatem.
‫A dla kamery mam zamiar nazwać przystawkę setup przechodzącą w ramię sprężynowe.
‫I oczywiście potrzebuję pliku nagłówkowego aparatu.
‫Więc tutaj jest nierealna dokumentacja silnika i tutaj, gdzie jest
‫napisane wyszukiwanie dokumentacji, wpiszę ci komponent kamery i tutaj widzę komponent kamery.
‫Wybiorę to.
‫A oto dokumentacja komponentu kamery.
‫Więc skopiuję go, aby dołączyć wklej go tutaj na górze naszego pliku.
‫A teraz powinniśmy być dobrzy.
‫Ok, więc chodźmy dalej i skompilujmy to.
‫Dobra.
‫Więc mam udaną kompilację.
‫Wróćmy do edytora i tu na -- Tank.
‫Oczywiście nic nie widzimy, ponieważ – czołg pochodzi od bazy – a komponenty, które
‫właśnie dodaliśmy, dodaliśmy do klasy czołgów.
‫Więc BP -- tank nie dostanie ich, ponieważ nie wywodzi się z klasy czołgów.
‫Teraz moglibyśmy stworzyć nowy plan w oparciu o klasę czołgu, ale potem musielibyśmy ustawić
‫te komponenty od nowa.
‫I naprawdę nie mam ochoty przechodzić przez całą tę pracę po raz drugi.
‫Jest prostszy sposób na naprawienie tego schematu do klasy czołgu.
‫Robimy to przechodząc do ustawień klasy i w panelu szczegółów z wybranymi ustawieniami klasy, widzimy
‫opcje klasy i jest ta klasa nadrzędna.
‫Lista rozwijana pokazuje, że jest ustawiona na podstawie, ale jeśli ją klikniemy, możemy wyszukać czołg
‫i wybrać czołg jako klasę bazową.
‫A teraz ten schemat pochodzi z klasy czołgu.
‫Widzimy więc, że wszystkie te właściwości, które ustalamy za pomocą naszych komponentów, takich jak siatka i
‫rozmiar kapsułki, nadal istnieją.
‫Dopiero teraz widzimy aparat.
‫W rzeczywistości mamy ramię sprężynowe i aparat.
‫A jeśli teraz wybierzemy sprężynowe ramię, zobaczymy tę czerwoną linię.
‫Więc to jest świetne.
‫Mogłem więc wziąć ten element ramienia sprężyny i zmienić jego docelową długość ramienia.
‫Jeśli mi się podoba, mogę ustawić go na około 600, a nawet zmienić jego obrót, aby skierował kamerę
‫w dół na zbiornik, wybierając tryb obrotu i obracając go nieco w górę.
‫Like Teraz chciałbym zaznaczyć, że nie należy zmieniać lokalizacji kamery.
‫Kuszące może być wybranie kamery i poruszanie nią po świecie, aby ustawić ją i ustawić
‫pod odpowiednim kątem.
‫Ale to nie jest właściwy sposób.
‫Prawidłowym sposobem jest ustawienie obrotu i docelowej długości ramienia elementu ramienia sprężyny.
‫Powodem jest to, że chcesz, aby kamera była przymocowana do końca ramienia sprężynowego.
‫Ramię sprężynowe ma wiele różnych wbudowanych funkcji, takich jak kurczenie się, gdy kamera
‫uderza o ścianę, aby uniknąć przeszkód, blokowanie widoku na staw i inne tego typu rzeczy.
‫Więc będziesz chciał, aby kamera była przymocowana do końca ramienia sprężynowego, a
‫następnie wyreguluj ramię sprężynowe, zamiast regulować pozycję i obrót kamery.
‫Tak więc w tym filmie stworzyliśmy klasę zbiornika i wyprowadziliśmy ze stawu podstawowego, aby odziedziczyć te cechy
‫z klasy stawu podstawowego.
‫Dodaliśmy komponent ramienia sprężynowego i komponent kamery i udostępniliśmy je edytorowi za pomocą opcji Tylko widoczne i
‫umieściliśmy je w osobnej kategorii.
‫Zbliżamy się więc krok po kroku do gotowego produktu i będziemy kontynuować rozwój tego zbiornika
‫w następnym wykładzie.
‫Zobaczymy się wkrótce.