‫Cześć i witaj.
‫W tym wykładzie dodamy nowe komponenty do odtwarzacza aplikacji, uchwyt
‫fizyki, i nauczymy się, jak możemy uzyskać do nich wskaźnik w naszym komponencie grabber.
‫Przyjrzymy się również, jak możemy uchronić się przed przypadkowym awarią silnika.
‫Zanurzmy się i zobaczmy jak.
‫Teraz, aby złapać przedmiot, musimy wejść w interakcję z systemem fizycznym.
‫W rzeczywistości istnieje element, którego możemy użyć, zwany uchwytem fizyki, który pozwala nam chwytać obiekty fizyczne i mówić im, gdzie
‫chcemy być na świecie, ale robi to w taki sposób, aby uwzględniał ograniczenia fizyczne, więc
‫tak się dzieje. przechodzić przez ściany.
‫I wygląda na to, że obiekt jest na sprężynie, a nie sztywno podąża za konkretnym punktem, do którego mówimy,
‫aby się udał.
‫Więc użyjemy komponentów uchwytu fizyki.
‫Zamierzamy dodać go do naszego odtwarzacza, BP, wraz z grabberem.
‫Przejdźmy więc do przycisku dodawania pod panelem komponentów i poszukajmy uchwytu fizyki i dodajmy.
‫I widać, że jest to składnik aktorski, a nie składnik sceny,
‫ponieważ schodzi w dół, więc nie ma własnej fizycznej transformacji.
‫To, co robimy z uchwytem fizyki, to mówimy obiektowi, który ma chwycić, a następnie mówimy mu, gdzie
‫chcemy, aby umieścił obiekt, który złapaliśmy.
‫Jeśli przejdziesz do dokumentacji, zobaczysz to w dostępnych funkcjach.
‫Jeśli przewiniesz w dół do sekcji funkcji, zobaczysz, że w funkcji lokalizacji znajduje się komponent zwalniający
‫i komponent chwytający.
‫Istnieje również ustalona lokalizacja docelowa i rotacja.
‫W tym miejscu chce spróbować umieścić przedmiot, ale oczywiście będzie respektował wszelkie fizyczne
‫ograniczenia, robiąc to i zrobi to płynnie, jakby był na sprężynie.
‫Teraz nie zamierzamy jeszcze używać tych funkcji, ale musimy znaleźć sposób na zdobycie
‫tego komponentu w naszym komponencie grabber.
‫Więc jak to robimy?
‫Cóż, chodźmy do naszego zgarnij C. P i spójrz na dużą grę i spróbuj ją zdobyć.
‫Teraz istnieje funkcja na dowolnym aktorze, która pozwala nam znaleźć komponent według jego typu.
‫Ale jaki jest rodzaj fizycznego uchwytu?
‫Cóż, jest to komponent obsługi fizyki, który jest tego typu, którego musimy użyć i dołączyć. Możesz zobaczyć, że
‫dołączanie w dokumentacji jest komponentem uchwytu fizyki silnika fizyki z ukośnikiem do przodu.
‫Skopiujmy więc to, co przechodzi do Grabbera CP i dodatku pod add draw debug helpers.
‫Następnie zrobimy to, aby uzyskać ONA, aby uchwycić nasz akt
‫posiadania, następnie wskaźnik na strzałkę i fajny komponent znajdowania według klasy.
‫Teraz ta funkcja jest specjalnym rodzajem funkcji zwanej funkcją szablonu w C++, a to
‫oznacza, że możesz przekazać jej pewne parametry, które są faktycznie oceniane podczas kompilacji.
‫Sposób, w jaki to robisz, to używanie takich nawiasów kątowych.
‫Więc używasz nawiasu kątowego po funkcji i nadajesz jej typ, który chcesz
‫znaleźć, co w naszym przypadku jest komponentem obsługi fizyki.
‫A potem zamykasz nawiasy kątowe.
‫Ale ponieważ jest to funkcja, musisz ją również wywołać, używając zwykłych nawiasów.
‫Więc po tym umieszczasz drugi zestaw nawiasów.
‫Możesz więc zobaczyć, że te argumenty czasu kompilacji są przekazywane za pomocą nawiasów ostrych, a następnie
‫argumenty czasu wykonywania są przekazywane za pomocą nawiasów.
‫Teraz, tak jak zwykła funkcja, ta będzie miała wartość zwracaną iw tym przypadku wartością zwracaną będzie
‫dowolny typ, który tutaj przekazaliśmy.
‫Ale jako wskaźnik, więc możemy wziąć wskaźnik komponentu do uchwytu fizyki i utworzyć zmienną dla
‫tego, co nazwiemy uchwytem fizyki i ustawić go na to, aby uzyskać właściciel znajdź składnik według klasy.
‫Zapamiętajmy teraz średnik na końcu tej linii i to jest wszystko, co jest
‫potrzebne, abyśmy mogli zdobyć inny składnik tego samego aktora.
‫Teraz pamiętaj, że powiedziałem ci, że wskaźniki mogą być niebezpieczne, ponieważ czasami mogą być wartością zerową, a to
‫może prowadzić do awarii.
‫Więc wyobraźmy sobie, że zapomnieliśmy umieścić komponent uchwytu fizyki na naszym aktorze, albo umieściliśmy grabber na nowym aktorze
‫i nie połączyliśmy go jeszcze z komponentem uchwytu fizyki.
‫W takim przypadku wskaźnik uchwytu fizyki będzie wskaźnikiem zerowym.
‫A jeśli spróbujemy użyć operatora strzałki lub operatora odniesienia na tym wskaźniku, spowoduje to awarię
‫naszego silnika.
‫Czasami naprawdę trudno jest zobaczyć, jak wygląda ta awaria.
‫Więc zamierzam po prostu iść dalej i faktycznie spowodować to awarię tylko po to, aby ci to pokazać i możesz
‫być w stanie to rozpoznać, jeśli zdarzy ci się to w przyszłości, zamierzam zmienić przypisanie naszego wskaźnika
‫uchwytu fizyki równego wskaźnikowi zerowemu .
‫Specjalne słowo kluczowe.
‫To wszystko.
‫Nie, Piotrze.
‫Tak napisałeś wskaźnik NULL w C++.
‫Na końcu stawiasz średnik.
‫A potem możemy zrobić fizykę, posługiwać się strzałką, uzyskać taką nazwę.
‫A jeśli pójdziemy dalej i skompilujemy używając kodowania na żywo, a kiedy zakończy się kompilacja, będziemy
‫iść dalej i przede wszystkim upewnić się, że zapisujemy wszystko, co mamy tutaj, w IBP plex i
‫zaraz się zawiesi silnik.
‫A jeśli pójdę dalej i wcisnę play, to w rezultacie dostaniemy awarię.
‫Reporter I możesz ulec pokusie, by pomyśleć, kiedy to zobaczysz, że coś poszło nie tak z nierzeczywistością,
‫ale tak naprawdę to twój kod jest tutaj winny.
‫Możesz zobaczyć, że w tym raporcie o awarii pierwsza linia mówi, że problem pochodzi od ciebie, chwyć
‫dwukropek, dwukropek, zacznij grać.
‫I faktycznie daje nam również numer wiersza, czyli wiersz 28.
‫Widać więc, że w tym miejscu w linii 28, kiedy odwołujemy się do
‫tego wskaźnika, aby wywołać na nim funkcję, popełniliśmy poważny błąd, nie sprawdzając najpierw, czy ten wskaźnik jest
‫pusty.
‫Więc to właśnie musimy zrobić.
‫I robimy to za pomocą instrukcji if.
‫Zasadniczo mówimy, że jeśli uchwyt fizyki nie jest równy wskaźnikowi null, to możemy śmiało wywoływać coś na tym uchwycie fizyki, abyśmy mogli umieścić uchwyt fizyki, uzyskać
‫nazwę wewnątrz tego wyrażenia if i to nas chroni, ponieważ ten kod, że
‫kod odwołujący się nie zostanie wykonany w przypadku, gdy mamy pusty
‫wskaźnik.
‫Więc zamierzam teraz usunąć wiersz 27, w którym ustawiamy go na brak wskaźnika i
‫rzucę wam wyzwanie, abyście wydrukowali nazwę komponentu dla siebie.
‫Więc drukuj tylko wtedy, gdy mamy rzeczywisty składnik, w zasadzie nie mamy pustego wskaźnika i używamy else, aby ostrzec, jeśli
‫nie udało nam się zdobyć tego składnika i spróbować usunąć składnik, aby sprawdzić, wstrzymać wideo
‫i mieć temu.
‫Dobra.
‫Witamy spowrotem.
‫Utworzymy tutaj nowy komunikat dziennika i powiemy, że mamy uchwyt fizyki, procenty dwukropka s i
‫mamy nazwę uchwytu fizyki.
‫Więc zamierzam po prostu wyciąć i wkleić jako drugi argument lub czwarty argument do dziennika U.
‫I zamierzam umieścić gwiazdę, ponieważ jest to sznurek.
‫Teraz dodajmy instrukcję alt pod naszymi instrukcjami if.
‫A tutaj umieścimy kolejny dziennik roku, który będzie tym
‫razem zamiast wyświetlacza, umieścimy komunikat ostrzegawczy, który pojawi się na żółto
‫i powiemy nie znaleziono uchwyt fizyki, wykrzyknik.
‫Teraz nie otwieraj edytora.
‫Więc zamierzam wykonać przesunięcie kontroli B, aby skompilować w kodzie programu Visual Studio, zamknąć terminal, gdy
‫się powiedzie, i ponownie uruchomić nowy projekt.
‫Po uruchomieniu, przejdźmy dalej i naciśnij play, otwórz dziennik wyjściowy i powinniśmy zobaczyć komunikat dziennika.
‫Mam uchwyt do fizyki.
‫Jaka nazwa to znajomy uchwyt fizyki.
‫A co, gdybyśmy podeszli do naszego odtwarzacza dźwiękowego i faktycznie usunęli ten uchwyt fizyki i
‫zaczęli grać.
‫Teraz spójrz na nasz dziennik wyjściowy, a oni idą, mamy żółte ostrzeżenie, że nie znaleziono uchwytu
‫fizyki.
‫Więc przestańmy grać.
‫Przejdźmy dalej i dodajmy uchwyt fizyki z powrotem, ponieważ będziemy go potrzebować i uratujemy gracza.
‫BP Świetne rzeczy.
‫Więc zorientowaliśmy się, jak możemy zdobyć inne komponenty z komponentów i nauczyliśmy się radzić sobie
‫z wartością null.
‫Chodzi o to, dlaczego musimy być ostrożni.
‫Do zobaczenia na następnym wykładzie.