‫Witam ponownie.
‫Teraz w tym filmie zaczniemy mówić o tym, jak możemy poruszać naszym czołgiem.
‫Aby przenieść czołg, będziemy musieli dodać jakieś przesunięcie i nierealny silnik.
‫Jeśli chodzi o dodawanie offsetu, musimy podjąć decyzję, czy dokonać offsetu w przestrzeni lokalnej
‫czy w przestrzeni światowej.
‫Omówmy więc różnicę między tymi dwiema rzeczami.
‫Teraz, w edytorze, mam wybrany -- zbiornik i jak tylko to wybierze, zauważycie,
‫że jest tam gadżet.
‫Tak nazywa się ta rzecz, gadżet.
‫Ma trzy strzały i każda z nich ma inny kolor.
‫Teraz, jeśli nie zauważyłeś, w lewym dolnym rogu ekranu znajduje się kolejny mniejszy gadżet.
‫I wygląda to podobnie do gadżetu aktora, którego wybieramy.
‫Więc jeśli wybiorę jakiegoś aktora, zawsze dostaniemy ten gadżet.
‫I oczywiście metauchwyt zmienia się, gdy przechodzimy z trybu tłumaczenia przez obracanie do trybu skalowania.
‫Tak długo, jak jesteśmy w tłumaczeniu, do którego możemy uzyskać dostęp z tej skrajnej lewej ikony w prawym
‫górnym rogu okna widoku lub za pomocą klawisza W, mamy możliwość przenoszenia rzeczy lub tłumaczenia ich, przeciągając jedną
‫ze strzałek na gadżet.
‫Kolory odpowiadają osiom czerwonym, ponieważ oś x zielony to oś y, a niebieski to oś z.
‫Teraz, jeśli obrócimy nasz widok i spojrzymy w innym kierunku, zobaczymy, że ten gadżet nadal wskazuje
‫ten sam pierwotny kierunek.
‫A gdy się obracamy, metauchwyt w lewym dolnym rogu rzutni obraca się, ponieważ kierunek
‫świata się nie zmienia.
‫Na razie w porządku.
‫Teraz patrzymy na kierunki w przestrzeni świata, ale dla każdego aktora na świecie istnieje kierunek
‫lokalny.
‫Możemy to zobaczyć, klikając tę ikonę, która wygląda jak świat, a wyskakujące okienko mówi cykle, gadżet
‫transformacji koordynuje układy między światem a przestrzenią lokalną.
‫Kiedy widzimy tutaj świat, oznacza to, że patrzymy na przestrzeń świata, ale jeśli na nią
‫klikniemy, zamienia się teraz w sześcian i teraz patrzymy na lokalną przestrzeń dla danego aktora, którego wybraliśmy.
‫Gizmo w lewym dolnym rogu rzutni nadal pokazuje nam przestrzeń świata.
‫Ale jeśli wezmę tego aktora i przełączę się w tryb rotacji i obrócę go, to kiedy wrócę do trybu tłumaczenia,
‫zobaczysz, że gadżet wskazuje teraz w innym kierunku.
‫Sam aktor ma własną lokalną oś x.
‫Możemy myśleć o osi x aktora jako o jego wektorze do przodu.
‫Teraz zauważ, że w lewym dolnym rogu ekranu gadżet nadal wskazuje w tym samym kierunku.
‫Ale ten aktor tutaj, pionek, ma swój lokalny kierunek X i wskazuje w innym kierunku.
‫Teraz, jeśli kliknę sześcian tutaj i przekształcę go z powrotem w świat teraz, gadżet czołgu zostanie dopasowany
‫i wyrównany z kierunkiem osi świata, dzięki czemu możemy przełączać się między światem a przestrzenią lokalną, aby dowolny
‫aktor mógł zobaczyć swoją lokalną kierunek kontra jego światowy kierunek.
‫Widzieliśmy więc, że dla każdego aktora, którego wybieramy w naszym świecie, ma to swój lokalny kierunek.
‫I to może, ale nie musi, różnić się od kierunku świata, jak pokazano na tym obrazku.
‫Jest to więc bardzo ważne, jeśli chodzi o przesuwanie obiektów w Unreal Engine.
‫Istnieją funkcje do poruszania obiektów i istnieje inny zestaw funkcji do poruszania się w przestrzeni
‫świata niż w przestrzeni lokalnej.
‫Powiedzmy, że nasz czołg jest zwrócony w tę stronę, a jego oś x jest skierowana nieco w lewo, jak wskazuje strzałka,
‫którą narysowałem tutaj na czołgu.
‫Teraz widzimy, na podstawie tego gadżetu w lewym dolnym rogu, że kierunek osi x świata wskazuje
‫w prawo.
‫Więc czołg nie jest ustawiony w kierunku kosmosu.
‫Powiedzmy, że mamy przesunąć ten czołg w przestrzeni świata w dodatnim kierunku X.
‫Wtedy, nawet jeśli czołg jest skierowany w lewo, nadal będzie się poruszał w tym kierunku x świata i będzie wyglądał,
‫jakby poruszał się do tyłu.
‫Więc nie tego chcemy.
‫Z drugiej strony, powiedzmy, że używamy funkcji, która została zaprojektowana do przemieszczania zbiornika w jego własnej przestrzeni
‫lokalnej.
‫Oznacza to, że jeśli przesuniemy czołg we własnym lokalnym kierunku X, będzie on poruszał się do przodu w kierunku, którego można
‫by się spodziewać.
‫I to jest zachowanie, którego chcemy.
‫Teraz w Unreal Engine.
‫Funkcja, która może to dla nas zrobić, nazywa się Add Actor Local Offset.
‫Ta funkcja przesuwa aktora w kierunku lokalnym.
‫Teraz stosuje przesunięcie, które jest pojedynczym ruchem.
‫Zasadniczo mówimy mu, w którym kierunku ma się poruszać i jak daleko, i przesuwa ten obiekt raz, co oznacza, że będziemy
‫wywoływać tę funkcję w każdej klatce, o którą chcemy przesunąć zbiornik.
‫Więc będziemy przesuwać go małymi krokami od czasu wywołania funkcji w każdej klatce.
‫Oznacza to, że nazywamy to teraz bardzo często dla naszego czołgu, jego własna lokalna oś X to jego kierunek do przodu.
‫To jest oś, której użyjemy, gdy dodamy lokalne przesunięcie.
‫Oto nierealna dokumentacja silnika dla lokalnego przesunięcia aktora ADD.
‫Widzisz, że jest to funkcja należąca do klasy aktora.
‫Dlatego teraz nazywa się to add actor local offset, ponieważ istnieje w klasie aktora.
‫Pionki odziedziczą tę funkcję, abyśmy mogli z niej korzystać.
‫Oto składnia.
‫Posiada cztery parametry wejściowe.
‫Pierwszy to wektor F zwany lokalizacją delta.
‫Więc będziemy musieli stworzyć wektor F, który możemy przekazać do tej funkcji lokalnego przesunięcia addactor.
‫Więc wiemy o tym dodaniu lokalnego przesunięcia aktora.
‫Chciałbym z tym poeksperymentować, aby zobaczyć, jak to działa, abyśmy mogli to zrobić w funkcji tiku.
‫Teraz nie nadpisujemy funkcji tic w klasie czołgów, ale mamy ją w podstawowej klasie
‫ponga.
‫Jeśli przejdziemy do CP stawu bazowego, mamy tu funkcję tik i nic tu nie robimy, a to jest idealne do
‫przeprowadzenia eksperymentów.
‫Więc to, co zamierzam zrobić, to wpisać, dodać, aktor, lokalny offset tak po prostu.
‫I zamierzam kliknąć prawym przyciskiem myszy i wybrać przejdź do definicji.
‫Teraz w pliku aktora CP mamy definicję lokalnego przesunięcia aktora ADD.
‫Teraz zauważ coś interesującego.
‫Sprawdza, czy komponent główny nie jest null, a jeśli nie, to wywołuje funkcję add local offset.
‫Tak naprawdę to, co robimy, to dodawanie offsetu do głównego komponentu.
‫A ponieważ wszystkie inne komponenty są dołączone do komponentu głównego, będą się z nim poruszać.
‫Dlatego ważne jest, aby pamiętać, że kiedy dodajemy lokalne przesunięcie, przesuwamy komponent główny, a wszystko
‫inne po prostu przesuwa się wraz z nim.
‫Teraz, jeśli najedziemy kursorem na dodaj lokalny offset, zobaczymy, że wszystkie cztery parametry wejściowe są tutaj wymienione.
‫Poza pierwszym, który jest wektorem F, pozostałe mają wartości domyślne.
‫Zwróć uwagę, że przemiatanie bool B, które mówi, że jest równe false.
‫Trzecie i czwarte parametry wejściowe również mają te wartości domyślne.
‫Oznacza to, że jeśli wywołamy tę funkcję i nie przekażemy danych wejściowych dla ostatnich trzech parametrów wejściowych, zostaną
‫one domyślnie ustawione na te wartości.
‫Teraz zamierzam zamknąć aktora CP i tutaj w funkcji tiku stawu podstawowego chciałbym wywołać add actor local offset każdej
‫klatki tylko po to, aby zobaczyć, jak to działa.
‫Teraz wiemy, że pierwszym parametrem wejściowym jest wektor F.
‫Nazywa się to lokalizacją delta.
‫Jest to ilość ruchu, którą chcielibyśmy dodać za każdym razem, gdy wywołamy tę funkcję.
‫Więc stworzę wektor F zwany lokalizacją delta.
‫Czyli położenie delty wektora F.
‫Teraz chciałbym wyzerować ten wektor.
‫Innymi słowy, upewnij się, że jest zainicjowany wszystkimi zerami.
‫Teraz chcę mieć wektor zerowy, który mogę przekazać w zero f, x, y i z dostaną zero f.
‫Więc to będzie dobrze służyć moim celom.
‫Teraz wezmę lokalizację Delta X i zmienię ją na dwa punkty F.
‫W ten sposób mamy wektor z Y i Z ustawionymi na zero, x ustawionym na dwa.
‫Więc zamierzam przejść dalej i przekazać lokalizację Delta do dodania lokalnego przesunięcia aktora jako rodzaj eksperymentu.
‫Teraz mogę uciec z wywołaniem lokalnego przesunięcia add aktora i po prostu przekazaniem pierwszego parametru wejściowego,
‫ponieważ pozostałe trzy są opcjonalne.
‫Więc zamierzam to skompilować i zobaczyć, co się stanie.
‫Teraz, jeśli pójdziemy dalej i wciśniemy play, zauważ, kilka rzeczy.
‫Po pierwsze, spójrz, wieża też się porusza.
‫Dzieje się tak dlatego, że umieściliśmy to w funkcji tika dla piona podstawowego i obie te więzi dziedziczą po pionie podstawowym.
‫W rzeczywistości wszystkie te stawy się poruszały.
‫Interesujące jest to, że wszystkie poruszają się we własnych kierunkach osi x.
‫Z tego punktu widzenia widzimy, że wszystko porusza się jednocześnie.
‫Jeśli klikniemy listę rozwijaną obok gry i wybierzemy symulację, pozwoli nam to zagrać w grę bez
‫posiadania stawów.
‫Więc jeśli kliknę Symuluj, sprawdź to.
‫Każdy staw porusza się we własnym kierunku osi x.
‫To jest całkiem dziwne i całkiem fajne.
‫To pokazuje nam, jak działa lokalne przesunięcie aktora reklamowego.
‫Porusza rzeczy w ich lokalnych kierunkach.
‫Teraz możemy wyjść z trybu symulacji, klikając menu rozwijane i wybierając wybrany
‫widok, co pozwoli nam grać w zwykłym trybie gry.
‫W porządku, zamierzam to zatrzymać i możemy wrócić do bazy -- i usunąć ten eksperymentalny
‫kod.
‫Zamierzam iść dalej i po prostu usunąć to z funkcji ticka, więc teraz wiemy, jak działa dodawanie lokalnego
‫przesunięcia aktora.
‫Wróćmy więc do Tank CP i tutaj mamy funkcję MOVE.
‫Wiemy, że ta funkcja jest wywoływana w każdej pojedynczej klatce i wiemy, że wartość jest równa jeden.
‫Jeśli wciskamy klawisz W i jest ujemny, jeśli wciskamy klawisz i jest zero, jeśli wciskamy
‫oba lub żaden.
‫Tak więc dla twojego wyzwania zamierzasz przesunąć czołg za pomocą dodania lokalnego przesunięcia aktora.
‫Więc w funkcji MOV utworzysz wektor F zwany lokalizacją delta.
‫Teraz upewnij się, że wyzerowałeś X, Y i z.
‫Możesz to zrobić na wiele sposobów, na przykład używając jednego z różnych konstruktorów wektorów f.
‫Teraz, gdy wyzerujesz wszystkie składniki, ustaw jego x na wartość wartości parametru wejściowego zmiennoprzecinkowego
‫w funkcji MOV.
‫Gdy już to zrobisz, idź dalej i wywołaj add aktor lokalny offset przechodzący w lokalizacji delta.
‫Zatrzymaj wideo i zrób to teraz.
‫Dobra.
‫Więc wróciłem tutaj w pliku CP czołgu.
‫Teraz nie potrzebuję już tego dziennika EWI, więc wyjmę go i stworzę wektor
‫F o nazwie Delta location.
‫Teraz mogę użyć jednego z konstruktorów wektorów F.
‫Pokazałem już, jak stworzyć nowy wektor ze wszystkimi zerami.
‫Pokażę ci inny sposób, który polega na zainicjowaniu tego wektorem f, wektorem zerowym.
‫I dokładnie tak to brzmi, wektor z zerem dla każdego składnika.
‫To tylko po to, by pokazać ci alternatywny sposób.
‫Więc mamy wektor zerowy.
‫Teraz wezmę lokalizację delta X i ustawię ją na wartość.
‫I na koniec mogę wywołać dodanie aktora lokalnego przesunięcia przechodzącego w lokalizacji delta.
‫Więc skompilujmy to i wróćmy tutaj w edytorze, wezmę mój czołg i po prostu zorientuję go tak,
‫aby był zwrócony w kierunku X świata, a następnie mogę nacisnąć przycisk odtwarzania i teraz kliknąć
‫widok.
‫Jeśli nacisnę klawisz W, idę do przodu, a jeśli nacisnę klawisz, cofnę się.
‫Jeśli nacisnę oba, znoszą się nawzajem i w ogóle się nie ruszam.
‫I oczywiście, jeśli nic nie naciskam, to też się nie ruszam.
‫Więc mamy teraz ruch dla naszego czołgu, ale jest trochę powolny, więc będziemy musieli trochę poprawić.
‫Porozmawiamy też o dopracowaniu tej mechaniki ruchu w naszym czołgu.
‫Podsumowując, dowiedzieliśmy się o ADD Actor, lokalnym przesunięciu i różnicy między przestrzenią światową a przestrzenią
‫lokalną.
‫W następnym filmie będziemy kontynuować doskonalenie tej mechaniki ruchu za pomocą naszego czołgu.
‫Zobaczymy się wkrótce.