‫Cześć i witaj.
‫W tym wykładzie będziemy obliczać odległość, jaką nasza platforma przebyła od początkowej lokalizacji,
‫i wyświetlać ją w edytorze, abyśmy mogli ją sprawdzić i debugować.
‫Zanurzmy się i zobaczmy, jak to się robi.
‫Widzieliśmy więc, że możemy zaimplementować pierwszą część pseudokodu.
‫Napisaliśmy, że platforma MOVE działa teraz.
‫Jest to więc platforma odsyłająca, której jeszcze nie omówiliśmy.
‫A pierwszy komentarz możecie zobaczyć tam, sprawdźcie, jak daleko się posunęliśmy.
‫Jak więc mamy sprawdzić, jak daleko posunęliśmy się od początku gry?
‫Cóż, są na to dwa składniki.
‫Przede wszystkim musimy obliczyć różnicę między dwoma wektorami i odległość między nimi.
‫Inną rzeczą, którą musimy wymyślić, jest to, jak śledzić, od czego zaczęliśmy.
‫Cóż, pierwsza część jest stosunkowo prosta.
‫Na szczęście wszystko, co musimy tam zrobić, to przejść do naszej ruchomej platformy Dot H i chcemy utworzyć tutaj nową
‫zmienną, ale nie taką, która jest wystawiona na plany.
‫Tym razem jest to tylko zmienna tylko dla C++, więc nie musimy umieszczać nad nią nowej właściwości.
‫I będzie to wektor F zwany pozycją początkową lub lokalizacją, aby użyć tej samej terminologii, co w
‫Unreal.
‫I nie zamierzamy ustawiać tego na żadną wartość od razu, ponieważ nie miałoby to żadnego sensu.
‫Lokalizacja początkowa.
‫Jeszcze tego nie wiemy, ale poznamy to w Begin Play.
‫Więc to właśnie zamierzamy zrobić.
‫Po superzakładzie na żywo przejdziemy do C++ Olympic na żywo.
‫Ustawimy naszą lokalizację początkową, abyśmy mogli powiedzieć lokalizację początkową.
‫Pamiętam, że nie umieszczamy tu wektora przed tym, ponieważ próbujemy odwołać się do
‫zmiennej klasy, zamiast tworzyć zmienną lokalną.
‫Tak więc ustawimy tę lokalizację początkową równą lokalizacji aktu GET, ponieważ na początku gry
‫aktor jest na początku.
‫Więc ustawiliśmy lokalizację początkową, a to oznacza, że mamy zmienną, która trwa przez całą instancję tej klasy,
‫więc możemy jej użyć ponownie i również wziąć.
‫I mamy zmienną, którą możemy spróbować znaleźć odległość między nimi.
‫Możemy powiedzieć, Hej, o ile aktualna lokalizacja odbiegała od tej początkowej lokalizacji?
‫Cóż, aby móc to zrobić, muszę dodać trochę więcej składni C++ do naszego glosariusza.
‫Po pierwsze, będzie się nazywał Operator Rozdzielczości Zasięgu, co jest nieco mylące, ale w
‫rzeczywistości jest to operator podwójnego dwukropka, który widzieliśmy wcześniej w pliku C++.
‫I zasadniczo wszystko, co robi, to pozwala zajrzeć do wnętrza klasy w taki sam sposób, jak operator
‫DOT, pozwala zajrzeć do wnętrza instancji klasy.
‫Przyjrzyjmy się więc temu bardziej szczegółowo.
‫Wiemy, że funkcja tick należy do klasy ruchomej platformy, ale nie należy do żadnej konkretnej instancji
‫tej klasy.
‫Wszystkie instancje ruchomej platformy mają tę samą implementację ticka, co oznacza bycie
‫klasą.
‫Tak więc operator rozpoznawania zasięgu między ruchomą platformą a tikiem w rzeczywistości mówi nam, że jest
‫to tik należący do klasy ruchomej platformy.
‫W ten sam sposób, jak poprzednio, używaliśmy operatora kropki, aby uzyskać x, który należy do bieżącej
‫lokalizacji.
‫Bieżąca lokalizacja była konkretną instancją wektora F, ale możemy użyć tego do przechwycenia funkcji
‫należących do klasy wektora i nie działających na konkretnej instancji tej klasy.
‫Jednym z przykładów jest określenie odległości między dwoma wektorami.
‫Sposób, w jaki robimy to w Unreal, polega na użyciu funkcji znajdującej się w klasie wektora.
‫Więc zrobilibyśmy wektor F, a następnie dwukropek, aby zajrzeć do wnętrza tej klasy, jakie funkcje ma dla nas dostępne i
‫przez które możemy przejrzeć.
‫A teraz zwracam tylko uwagę na autouzupełnianie, które pojawia się w tym momencie.
‫Nie wspominałem o tym w przeszłości, ale kiedy wykonujemy te operacje, tak naprawdę staramy
‫się być sprytni i powiedzieć nam, jakie funkcje są dostępne w całej tej klasie wektorów f.
‫I widać, że jest ich całkiem sporo.
‫Ten, którego szukamy, nazywa się Dist Short na odległość.
‫Teraz zauważysz również, że istnieje jeden, który faktycznie nazywa się odległością i jest właściwie synonimem.
‫Moglibyśmy użyć jednego z nich, ale użyję krótszego, aby kod był bardziej
‫zwięzły i możemy otworzyć nawiasy.
‫I znowu, autouzupełnianie przychodzi nam z pomocą, ponieważ mówi nam, co przyjmuje jako argumenty.
‫Widzimy, że pierwszy argument jest wektorem trzyD, a drugi jest również efektem 3D.
‫Więc fakt, że nazywa się tutaj Factor 3D, jest trochę dziwny, ale zasadniczo prosi o wektor
‫F.
‫Oznacza to, że jeśli przekażesz dwa argumenty, oba są czynnikami.
‫Powiem ci, że moja wartość zwrotu, czyli ten bit po lewej stronie, będzie podwójną.
‫Teraz podwójna jest zasadniczo po prostu dokładniejszym floatem.
‫Więc możemy zasadniczo powiedzieć.
‫To jest pływak wychodzący stąd.
‫Wyrażenie, które stworzyliśmy, tworzy pływak.
‫Niesamowite.
‫Więc zamierzamy spróbować znaleźć odległość między miejscem startu.
‫Więc jako pierwszy argument wpiszemy lokalizację początkową.
‫A potem druga będzie obecną lokalizacją.
‫Teraz nie martw się, na tym etapie nie ma znaczenia, w jaki sposób ułożymy tę rundę,
‫ponieważ odległość między dwoma wektorami będzie taka sama.
‫Niezależnie od tego, czy zaczynasz od punktu A do B, czy od B do A, zawsze będzie to ta sama odległość.
‫Więc moglibyśmy umieścić je tak czy inaczej, jeśli chcesz.
‫Więc teraz mamy wyrażenie, które zwraca liczbę zmiennoprzecinkową.
‫Chciałbym więc zachęcić Cię do zaktualizowania nowej właściwości za pomocą tego wyrażenia, abyśmy mogli zobaczyć, jaka
‫jest jej wartość.
‫Więc stwórz nową własność zmiennoprzecinkową i nazwij ją jak chcesz, a następnie uaktualnij to w każdym
‫ujęciu wartością f vector dest, a następnie zagraj w grę i zobacz, co się stanie.
‫Czy otrzymujesz wyniki, których oczekiwałeś?
‫Czy zwiększa się tak szybko, jak byś się spodziewał?
‫Wstrzymaj wideo i spróbuj.
‫Dobra.
‫Witamy spowrotem.
‫Więc najpierw stworzymy nową nieruchomość.
‫Więc zamierzam umieścić to nad naszą lokalizacją początkową, aby zgrupować wszystkie nieruchomości razem.
‫Mam zamiar mieć nową edycję właściwości w dowolnym miejscu, fakty.
‫Nie musimy być w stanie tego edytować.
‫Więc możesz sobie wyobrazić, że gdziekolwiek oznacza, że możesz to edytować.
‫Cóż, mamy też widoczne miejsce, które nie pozwala nam go edytować, ale pozwala go zobaczyć.
‫Więc tego użyję zamiast tego.
‫Dla uproszczenia zostawię tę kategorię wyłączoną, ponieważ używamy tej zmiennej tylko po to, aby
‫móc zobaczyć, co się dzieje.
‫Jak wspomniałem, będzie to typ zmiennoprzecinkowy i nazwę to przesuniętą odległością, aby było jasne,
‫na co patrzymy w inspektorze.
‫Ustawię jego wartość domyślną na minus jeden tylko po to, byśmy wiedzieli, że ją zaktualizowaliśmy.
‫Jeśli wyświetla się minus jeden, wiemy, że aktualizacja nie przeszła.
‫Więc zamierzam wziąć ten dystans przeniesiony.
‫Przejdziemy do naszej implementacji, weźmiemy i ustawimy odległość przesuniętą na równą, aby
‫wpłynąć na odległość okrężnicy.
‫Używając tego operatora rozdzielczości zasięgu, aby uzyskać funkcję odległości, a następnie
‫zakończyć linię średnikiem.
‫Spoko loko.
‫Więc przejdziemy do Unreal, wciśniemy przycisk kompilacji i możemy zamknąć terminal.
‫Powinniśmy zobaczyć, jak ta odległość się przesunęła, pokazując minus jeden.
‫Widzisz, że jest wyszarzone, ponieważ nie mogę go edytować, ponieważ jest widoczny, a mimo to nie edytować.
‫Więc chodźmy dalej i włączmy odtwarzanie, a my będziemy musieli upewnić się, że wybraliśmy
‫ruchomą platformę w zarysie i możemy spojrzeć na przebytą tutaj odległość i widać,
‫że nieruchomość szybko zajmuje około 1 do 300 na sekundę.
‫A więc idzie z prędkością, jakiej bym się spodziewał, czyli 100 na sekundę.
‫Więc wygląda na sukces.
‫Udało nam się obliczyć przebytą odległość, a także ją zwizualizować.
‫Świetna sprawa.
‫Do zobaczenia na następnym wykładzie.