Archives Listopad 2020

Shape Traces

Tracing można również wykonać za pomocą określonych kształtów. Istnieją funkcje śledzenia dla kształtów box, capsule czy sphere shapes, ale te funkcje są droższe dla wydajności w wykonaniu niż przy liniach.


Dla wszystkich tych kształtów istnieją funkcje do śledzenia według kanału i typu obiektu. Istnieją również funkcje dla pojedynczych trafień lub wielu trafień.

Line Trace By Channel

Funkcja LineTraceByChannel sprawdza kolizję wzdłuż zdefiniowanej linii za pomocą kanału śledzenia, którym może być „Visibility” lub „Camera”, i zwraca strukturę Hit Result z danymi dla pierwszego trafienia Actor w teście kolizji.


Punkty wejścia:

  • Start oraz End: wektory lokalizacji definiujące początek i koniec linii, która ma być użyta do testu zderzenia.
  • Trace Channel: kanał używany do testu kolizji. Może to być „Widoczność” lub „Kamera”.
  • Trace Complex, Actors to Ignore, Draw Debug Type: te parametry są używane do debuowania

Break Hit Result

Kiedy funkcja śledzenia koliduje z czymś, zwraca jedną lub więcej struktur Hit Result. Break Hit Result może być użyty do uzyskania dostępu do elementów wyniku trafienia, jak widać na obrazku po prawej stronie.
Niektóre elementy Break Hit Result:

  • Blocking Hit: wartość logiczna Boolean, która wskazuje, czy nastąpiło trafienie blokujące.
  • Location: lokalizacja trafienia
  • Normal: normalny wektor trafienia w przestrzeni świata
  • Hit Actor: Odniesienie do Aktora trafionego przez trace

Blueprint Interface

Blueprint Interface (BPI) zawiera tylko definicje funkcji, bez implementacji.
Jeśli klasa Blueprint implementuje BPI, używa dostarczonej definicji, a następnie implementuje własną logikę dla tej funkcji.

Aby utworzyć nowy Blueprint Interface, kliknij Create New w Content Browser a nastepnie z Blueprints wybierz Blueprint Interface

Aby dodać Blueprint Interface do klasy Blueprint, kliknij przycisk Class Settings na pasku narzędzi w edytorze Blueprints. W sekcji Interfejsy w panelu Szczegóły kliknij przycisk Dodaj i wybierz klasę Blueprint Interface.

W przykładzie powyżej klasy Third Person Character mamy odziedziczony interface “Nav Agent Interface” od klasy Character

Istnieje kilka funkcji narzędziowych związanych z interfejsami Blueprint.

  • Does Implement Interface: sprawdza czy konkretny obiekt ma zaimplementowany Blueprint Interface
  • Get All Actors with Interface: znajduje wszystkich aktorów na bieżącym poziomie, które mają wdrożony Blueprint Interface

Random Numbers From Streams

Możliwe jest utworzenie sekwencji powtarzalnych liczb losowych za pomocą zmiennej Random Stream.


Aby to zrobić, utwórz zmienną typu „Random Stream”. Ustaw właściwość Initial Seed w sekcji Default Value panelu Details dla zmiennej.


Wartość właściwości Initial Seed definiuje sekwencję liczb losowych.

Random Numbers

Istnieją funkcje liczb losowych, które zwracają losową wartość. Parę najważniejszych z nich poniżej:

  • Random Integer: zwraca liczbę całkowitą z przedziału od „0” do „Max – 1”.
  • Random Integer in Range: Zwraca liczbę całkowitą z przedziału od „Min” do „Max”.
  • Random Float: Zwraca wartość zmiennoprzecinkową z przedziału od „0” do „1”.
  • Random Float in Range: Zwraca wartość zmiennoprzecinkową między „Min” i „Max”.

Save Game

Aby zapisać grę i jej zmienne, które będą przechowywane w naszym projekcie, muszą zostać określone w zmiennych typu Blueprint typu „SaveGame”.


Pierwszym krokiem do zapisywania i ładowania gier za pomocą Blueprints jest utworzenie nowego schematu przy użyciu „SaveGame” jako klasy nadrzędnej.

Funkcja Create Save Game Object tworzy Save Game Object na podstawie klasy Save Game.


Informacje, które mają zostać zapisane, zostaną zapisane w zmiennych tego obiektu.

Funkcja Save Game to Slot zapisuje zawartość obiektu Save Game Object do pliku na dysku.

Funkcja Does Save Game Exists, sprawdza, czy zapis gry istnieje w podanym parametrze Slot Name.


Jest to przydatny test przed próbą załadowania zapisanej gry.

Funkcja Load Game from Slot ładuje zawartość contentu i tworzy obiekt Save Game z zawartością.


Parametr wyjściowy Return Value jest odniesieniem do ogólnego obiektu Save Game, aby uzyskać dostęp do zmiennych, konieczne jest odniesienie do właściwego Save Game Blueprint.

Funkcja Delete Game in Slot służy do usuwania danych zapisu gry w slocie.


Parametr “Return Value” ma wartość „true”, jeśli plik został znaleziony i usunięty.

Retriggerable Delay

Funkcja Retriggerable Delay wykonuje czynności związane z pinem Completed tylko po upływie czasu określonego w parametrze Duration.


Różnica między funkcjami Retriggerable Delay i Delay polega na tym, że wartość odliczania parametru Duration zostanie zresetowana, jeśli funkcja Retriggerable Delay zostanie ponownie wywołana.

Data Tables

Do przedstawienia danych można użyć database. Jest to przydatne w przypadku rozgrywki opartej na wielu zmiennych oraz danych opartych o rozgrywkę.


Aby utworzyć nową tabelę danych, kliknij zielony przycisk Dodaj nowy w Wyszukiwarce bibliotek, a następnie w podmenu Różne wybierz opcję „Tabela danych”.


Po utworzeniu tabeli danych konieczne jest wybranie struktury, która będzie reprezentować zawartość tabeli. Po utworzeniu nowej tabeli danych kliknij ją dwukrotnie, aby ją edytować.

W moim przypadku była to struktura dotycząca zmiennych broni.

Można utworzyć zmienną reprezentującą tabelę danych w programie Blueprint.


Funkcja Get Data Table Row używa parametru Row Name w celu zwrócenia wiersza tabeli jako struktury.


Aby uzyskać dostęp do atrybutów struktury, można użyć węzła Break Struct.

Maps

Istnieje inny rodzaj typu zmiennych nazywany Maps. Aby zdefiniować zmienną jako Maps, kliknij ikonę obok listy rozwijanej Typ zmiennej i wybierz „Maps”.


Każdy element maps ma klucz powiązany z wartością. Mapa jest nieuporządkowana i jest przeszukiwana przy użyciu wartości klucza. Górny obraz po prawej stronie przedstawia maps, której typ klucza to „Name”, a typ wartości to „Integer”.

Kluczowe wartości mapy muszą być unikalne.