‫Cześć i witaj.
‫W tym wykładzie będziemy tworzyć nowy komponent w C++, to pole wyzwalające, które będzie nam raportować,
‫gdy wejdziemy do wnęki lub umieścimy w niej dowolny obiekt.
‫Widzicie, że w lewym górnym rogu otrzymujemy małą wiadomość o planie.
‫Aby to zrobić, musimy zrozumieć, jak zachowują się nakładanie się, blokowanie i różne
‫reakcje kolizyjne w Unreal.
‫Zanurzmy się i dowiedzmy się.
‫Teraz zaznajomiliśmy się już z działaniem kanałów śledzenia.
‫Wiemy, że możesz mieć śladowe reakcje na różnych obiektach w naszej scenie, takich jak ten krzew.
‫Widać, że ma odpowiedź ignorowania na ślady broni, ale blokuje ślady widoczności.
‫Jest też przykład kuloodpornego szkła, które blokuje broń, ale zapewnia widoczność przez i ceglaną ścianę, która
‫blokuje oba te elementy.
‫Możesz więc zobaczyć, jak ten system działa z kanałami śledzenia.
‫Co się stanie, jeśli spróbujemy zdecydować, które obiekty mogą się na siebie nakładać?
‫Które przechodzą?
‫Które blokują się nawzajem?
‫To może się trochę skomplikować.
‫Widzieliśmy to już, kiedy próbowaliśmy nałożyć gargulca na naszego pionka.
‫Teraz tak to działa.
‫Zasadniczo używamy tych typów obiektów.
‫Każdy obiekt, do którego może należeć, może być określonym typem obiektu.
‫Różni się to od systemu typów w C++.
‫To są typy kolizji.
‫Więc możesz mieć obiekt A, obiekt B, a w ich ustawieniach, jeśli spojrzymy i przyjrzymy się na
‫przykład ustawieniom naszego gargulca, zobaczysz, że mają one swój własny typ obiektu.
‫Ten jest światowym obiektem statycznym.
‫Ale dalej niżej mają również swoje reakcje na inne typy obiektów.
‫Możesz więc zobaczyć, że ten obiekt zablokuje inne statyki świata.
‫Zablokuje inną dynamikę świata.
‫Będzie nakładał się na typy pionków.
‫Zablokuje ciała fizyczne i prawie zablokuje każdy inny typ.
‫I oczywiście sam pionek, jeśli pójdziemy i znajdziemy naszego gracza BP.
‫I spójrz w jego składnik kapsułki.
‫Przyjrzyj się szczegółom i przewiń w dół do miejsca, w którym mamy gotowe ustawienie kolizji.
‫Jeśli możemy rozwinąć predefiniowane ustawienia ściągania i kolizji, nie możemy ich edytować, ale możemy zobaczyć, co robi.
‫I widać, że ma swoją własną reakcję na statykę świata.
‫Więc jego odpowiedzią na statykę świata byłoby zablokowanie go.
‫Tak więc mamy tutaj dwie różne opcje.
‫Pionek mówi, że blokuję statykę świata, ale gargulec mówi, że nakładam pionki.
‫Więc co powinno się stać?
‫Cóż, tutaj pojawia się ta tabela i mam link do tego wpisu na blogu,
‫jeśli chcesz przeczytać go w całości w zasobach wykładów.
‫Widać więc, że zajmuje to najmniej blokującą interakcję między nimi.
‫Więc jeśli obiekt A był pionkiem i mówi, hej, powinienem zablokować tego gargulca, ale gargulce obiekt B i
‫mówi, hej, powinienem nałożyć tego pionka.
‫Więc zajmie to najmniejsze blokowanie z tych dwóch i będzie się nakładać.
‫Oznacza to, że jeśli chcesz, aby dwie rzeczy blokowały się nawzajem, oboje muszą zgodzić się, że to
‫właśnie chcą zrobić.
‫Spójrzmy więc na inny przykład tutaj.
‫Mamy gracza, który jest pionkiem typu obiektowego, a jego odpowiedzią obiektową na inne pionki jest blokowanie
‫ich, a obiekty statyczne świata to blokowanie ich.
‫Mur z cegły jest światowym obiektem statycznym.
‫Może blokować pionki i blokować zakłócenia świata.
‫Więc ci dwaj by się ze sobą zgadzali.
‫Teraz krzew jest również światowy statyczny, ale nachodzi na pionki.
‫Jest bardzo podobny do naszego gargulca, ale blokuje statykę świata.
‫Więc jeśli zejdziesz w dół i przyjrzysz się, co by się stało, to pionek spróbowałby przejechać przez
‫krzaki i mógłby, ponieważ wymaga najmniejszej opcji blokowania, czyli nakładania się i generuje zdarzenie nakładania
‫się, które możemy podpiąć w kodzie lub blueprint, podczas gdy nie będzie w stanie przejść przez ceglaną
‫ścianę i ponownie generuje zdarzenie trafienia, coś, do czego możemy się podłączyć w Blueprint
‫lub C++.
‫Więc dlaczego wchodzę w całą tę głębię?
‫Ponieważ to, co chcę zrobić, to umieścić przedmiot, który jest w zasadzie niewidoczny, wewnątrz tej ściany, co pozwala nam
‫umieścić tu gargulca, a gdy to się stanie, otrzymamy zdarzenie.
‫Więc gargulec wesprze wydarzenie i powie: Hej, coś się na mnie nakłada.
‫Dlaczego to wszystko jest ważne?
‫Ponieważ chcę umieścić obiekt, który jest niewidoczny, ale nałoży się na gargulca i powiadomi nas o
‫tym fakcie.
‫Następnie możemy wysłać zapytanie z C++ lub możemy uzyskać zdarzenia w planach w dowolny sposób.
‫A sposób, w jaki to zrobimy, to przede wszystkim stworzenie planu z tej ściany lochu.
‫Więc kliknę przycisk blueprint w okienku szczegółów, stworzę
‫nową podklasę i nazwę ją BP, Underscore Secret Wall i kliknę wybierz, aby ją utworzyć.
‫I zabrał go do naszego głównego okna i ma na nim ruch.
‫To, co również chcę tutaj dodać, to zasadniczo komponent, który nazywa się kolizją pudełek.
‫Więc jeśli klikniemy na kolizję pudełek, widać, że jest ona całkowicie niewidoczna.
‫Daje ci tylko kilka rozmiarów pudełka, które możemy zmienić.
‫Możemy je powiększyć, aby gdziekolwiek umieścimy gargulca w tym pudełku, on go zaakceptuje.
‫I widzimy, że ma tutaj opcje kolizji.
‫Mamy nakładanie się wszystkich dynamicznych jako domyślne, ale jako domyślne ustawienie wstępne.
‫Ale jeśli trafimy na niestandardowe, możesz zobaczyć, że możemy zmienić typy obiektów i możemy zmienić sposób, w jaki reaguje
‫na różne rzeczy tutaj.
‫I myślę, że co najważniejsze, jak widać, jest skonfigurowany tak, aby nakładać się na większość typów obiektów, co oznacza, że
‫nawet jeśli nie są ustawione na nakładanie się na dynamikę świata, będzie się nakładać.
‫Nie zablokuje niczego, co pozwoli nam umieścić tu gargulca.
‫Więc zamierzam usunąć ten komponent ze sceny, ponieważ chcemy stworzyć nowy komponent
‫w C++ oparty na tej kolizji pudełek.
‫Teraz chcę tylko pokazać, że z tym polem, jeśli ustawimy je z powrotem na domyślne ustawienie, w
‫którym było włączone, które nakładało się na wszystkie dynamiczne, jak sądzę, i sprawdzamy lub jak już jest zaznaczone, faktycznie generowanie zdarzeń nakładania się
‫jest już zaznaczone.
‫Następnie możemy przejść do naszego wykresu zdarzeń i kliknąć tutaj prawym przyciskiem myszy i poszukać nakładania się.
‫A tuż u góry widać, że dodatek zaczyna nakładać się na pudełko.
‫Więc jeśli klikniemy to i faktycznie zmienimy nazwę komponentu pola na obszar wyzwalania, jak to, to w zasadzie, jeśli nachodzimy
‫na obszar wyzwalania, otrzymamy listę właściwości elementu, który nakłada się na nas, abyśmy
‫mogli wziąć to.
‫Nakłada się na dzieci.
‫Zdobądź jego nazwę.
‫Więc get display name to nazwa węzła, a następnie możemy wziąć to i wydrukować ciąg wynikowy, podłączyć
‫go do pinu wykonawczego i możemy iść dalej i nacisnąć play.
‫A jeśli podejdziemy do obszaru, możesz zobaczyć, że mówi, że odtwarzacz dźwiękowy jest tym, co go nakłada.
‫Teraz nie widzi błędu, bo jest tak ciemno.
‫Więc ponownie podejdę do sekretnej ściany, usłyszę sygnał dźwiękowy i dodam składnik światła punktowego, który umieszczę w
‫tej małej wnęce, obracając twarzą w dół i oświetlając przestrzeń, w której
‫chcesz obiekt.
‫Teraz na scenie widzimy to bardzo wyraźnie.
‫Więc chodźmy dalej i włączmy odtwarzanie i możemy podejść do tej wnęki.
‫Jeśli nałożymy się na to, mówi, że nakłada się odtwarzacz dźwiękowy i możemy iść i złapać naszego
‫gargulca z tej komórki za pomocą naszego nowo wybitego chwytaka, i możemy wziąć tego gargulca i umieścić go w tym obszarze.
‫Jednak wydaje się, że nie generuje żadnych nakładających się zdarzeń, a to dlatego, że tak jak potrzebujemy, w kolizji biorą
‫udział dwie strony.
‫Istnieją również dwie strony do generowania zdarzeń nakładających się.
‫Więc tylko dlatego, że mamy to włączone w tym komponencie pudełka, nie oznacza to, że gargulec wchodzący do niego
‫będzie ostrzegał nas o każdym zdarzeniu nakładania się.
‫Musimy więc przejść do gargulca i sprawdzić, czy generuje zdarzenia nakładania się.
‫Więc wtedy powinny mieć miejsce zdarzenia nakładania się.
‫Chodźmy i podnieśmy gargulca, zabierzmy go do wnęki i wsadźmy do środka.
‫A teraz zbliża się impreza.
‫Kiedy tak się dzieje, posąg Gargulca rzeczywiście jest rejestrowany.
‫Teraz nie chcę używać zdarzeń planowych w tym konkretnym przypadku.
‫Więc to, co chcę zrobić, to wziąć nasz komponent obszaru wyzwalania i faktycznie przekształcić go w jakiś komponent
‫C++, który może ocenić, czy ma figurkę Gargulca, której chce, czy już nie.
‫Sposób, w jaki to zrobimy, to przejście do komponentów ADD, tworzenie nowych komponentów C++.
‫I jako klasa nadrzędna, zamiast wybierać komponent ACT lub komponenty
‫sceny, przejdziemy do wszystkich klas i zamiast tego będziemy szukać komponentu box.
‫I możesz zobaczyć komponenty kształtu, komponenty pudełka, ten, który chcemy, a my możemy iść dalej i
‫uderzyć dalej.
‫Chciałbym więc zachęcić Cię do stworzenia tego komponentu teraz, gdy pokazałem Ci, jak ustawić klasę
‫nadrzędną.
‫Zamierzasz więc nazwać go komponentami wyzwalającymi i będziesz musiał skopiować niektóre rzeczy z innych komponentów, które stworzyliśmy, ponieważ
‫nie są one skonfigurowane w ten sam sposób.
‫Biorąc pod uwagę, że pochodzimy od innego rodzica, nie musisz kopiować wyrównania swojej klasy.
‫Cała ta linia jest w zasadzie pusta w komponencie wyzwalającym podczas jego tworzenia.
‫Więc skopiuj to ze swojego chwytaka lub przenoszącego, w przeciwnym razie nie będziesz mógł dodawać swoich komponentów
‫do swoich planów.
‫Więc powinieneś użyć tych nowych komponentów wyzwalających, aby zastąpić nasze obecne komponenty pudełkowe i ponownie wydrukować coś z
‫Begin Play.
‫Begin Play nie zostanie skonfigurowany automatycznie, więc będziesz musiał skopiować z pliku nagłówkowego
‫i pliku C++ nasze inne komponenty, aby to skonfigurować.
‫Wstrzymaj wideo i spróbuj.
‫Dobra.
‫Witamy spowrotem.
‫Więc zamierzam nazwać to składnikami wyzwalaczy, wszystkie jedno słowo i uderzenie, aby utworzyć klasę.
‫Tak więc zgodnie z przewidywaniami, nowa linia klasowa nie ma nic w nawiasach.
‫A jeśli zajrzymy do naszego edytora i przejdziemy do sekretu BP, spróbujemy dodać to wyszukiwanie
‫komponentów dla wyzwalacza.
‫Widać, że nic się nie pojawia.
‫Powodem tego jest to, że gdybyśmy przeszli do I złapałem kropkę H i musielibyśmy spojrzeć na jej
‫linię klasy, widać, że jest tutaj fragment, który mówi o odrodzeniu schematu komponentu.
‫A więc najważniejsze, musimy to skopiować.
‫Ma również grupę klasową.
‫Równie dobrze moglibyśmy skopiować całość, ponieważ pozwala nam to stworzyć te komponenty w planie,
‫abyśmy mogli wkleić to jako linię klasy dla komponentu wyzwalającego.
‫A potem druga rzecz, jeśli pójdziemy ją złapać, widać, że zaczyna się zabawa.
‫Znajduje się w chronionej sekcji i możemy po prostu skopiować definicję tej funkcji rozpoczęcia odtwarzania,
‫skopiować ją do naszych komponentów wyzwalacza i umieścić tak, jak była w grabberze, tuż pod wygenerowanym
‫ciałem.
‫Następnie możemy przejść do naszego zgarnięcia CP i zobaczyć, jak duża została zdefiniowana gra.
‫Tutaj możesz zobaczyć, że ma fajną zabawę, która jest naprawdę ważna.
‫Więc skopiujemy to, przejdźmy do komponentu wyzwalacza.
‫CP I zamierzamy zmienić chwyt na dwukropek na komponent wyzwalacza, rozpocząć grę, a następnie w tym miejscu możemy umieścić
‫nowy dziennik i napiszemy po prostu prostą wiadomość, taką jak składnik wyzwalacza
‫ożywiony.
‫Pójdziemy dalej i skompilujemy.
‫Może to trochę potrwać, biorąc pod uwagę, że wprowadziliśmy kilka dość istotnych zmian w naszym nagłówku akt.
‫A kiedy już to zrobimy, możemy przejść do naszej sekretnej ściany BP, przejść do dodania i wyszukać wyzwalacz.
‫A tutaj widać, że mamy ten komponent wyzwalający.
‫Teraz możemy to dodać.
‫Możemy usunąć nasz obszar wyzwalania, który ustawiliśmy wcześniej.
‫Po prostu śmiało usuń to i sprawdź, czy chcemy to usunąć.
‫Zasadniczo unieważni to zdarzenie, które stworzyliśmy, i możemy sprawdzić, czy kolizje są ustawione tak, jak chcemy
‫na wyzwalaczu, jeśli mamy zamiar to sprawdzić.
‫Tak, jest ustawiony na nakładanie się wszystkich elementów dynamicznych i generowanie nakładających się zdarzeń.
‫I na koniec, to, co musimy zastąpić, to to zdarzenie, w którym wybierzemy nasz
‫wyzwalacz prawym przyciskiem myszy i przejdziemy do rozwinięcia zdarzenia dodawania dla kolizji wyzwalaczy i dodawania na naszym własnym komponencie, aby rozpocząć nakładanie się.
‫Tego używaliśmy wcześniej.
‫Zaczep aktywną szpilkę i zaczep szpilkę egzekucyjną, aby przejść na poziom lochów.
‫Idź i podnieś gargulca, spróbuj umieścić go we wnęce, a zauważymy, że to nie działa.
‫Więc teraz mamy ustawiony wyzwalacz.
‫Przejdźmy do rzutni i widać, że w rzeczywistości wyzwalacz nie został wykonany.
‫Nie jest wystarczająco duży.
‫Nie ustawiliśmy go poprawnie.
‫Więc chodźmy i umieśćmy go na środku wnęki i zwiększmy właściwości rozciągnięcia pudełka, aby złapać
‫to, co umieściliśmy w tym obszarze wnęki.
‫Nie ma znaczenia, czy jest trochę większy i daje nam margines bezpieczeństwa, wtedy możemy wejść do
‫lochu, zagrać i wejść do alkowy.
‫I rzeczywiście, wykrywa, że gracz BP wszedł do tej wnęki.
‫Świetna sprawa.
‫Na tym wykładzie dowiedzieliśmy się wszystkiego o typach obiektów i odpowiedziach na typy obiektów, i
‫wykorzystaliśmy to do skonfigurowania tego komponentu wyzwalacza.
‫Do zobaczenia na następnym wykładzie.