Jak działa wyposażona różdżka
Różdżka — omówienie
Ważne
Jeśli dopiero zaczynasz korzystać z funkcji Equippables, zalecamy zapoznanie się z artykułem o nazwie Hold objects realistycznie with Equippables przed przeczytaniem tego artykułu.
Różdżka jest jedną z elementów wyposażonych dostępnych w pakiecie Toybox, który otrzymasz po pobraniu naszych przykładów usługi Mesh z usługi GitHub. Kiedy podniesiesz różdżkę, trzymasz go przed tobą prawie klatki piersiowej wysoko, a Wand wyświetla błyszczący efekt cząstek pary na jego wierzchołku.
Aby aktywować różdżkę, kliknij lewy przycisk myszy (PC) lub przycisk wyzwalacza kontrolera (Quest). Twoje ramię pcha do przodu i końcówka różdżki emituje fajerwerki, które są generowane przez inny efekt cząstek.
Typ aktywowaniaandy jest ustawiony na pojedynczy. Oznacza to, że gdy tylko przechodzi przez jego zachowania, wand deaktywuje i ramię wraca do początkowej pozycji. Kliknij ponownie, aby powtórzyć zachowania.
Wykres skryptu różdżki
Przyjrzyjmy się, jak działa różdżka, sprawdzając wykres skryptu, który jest do niego dołączony.
Otwórz przykład toybox i upewnij się, że jesteś w scenie toybox .
W obszarze Hierarchia wybierz Wand_Prefab GameObject.
W inspektorze przejdź do składnika Script Machine i zwróć uwagę, że zawiera on zasób grafu skryptu o nazwie MagicWand. Kliknij przycisk Edytuj graf.
Wykryj, kiedy różdżka jest odbierana
W skrypicie wizualizacji dołączonym do platformy Wand rozpoczniemy analizę w grupie węzłów o nazwie Sprawdzanie, czy wstrzymano, aby rozpocząć magiczny blask.
Węzeł, który określa, czy różdżka jest odbierana, czy nie jest treść z możliwością interakcji z siatką: Is Mine. Jest to wartość logiczna i zaczyna się od wartości False.
Kiedy awatar podnosi różdżki, jego stan się zmienia. Wartość parametru isMine zmienia się na "true" i ta wartość jest przekazywana do węzła if . Powoduje to wyzwolenie dźwięku "pick-up" ...
... a także zmienia wartość zmiennej obiektu StartGlowVFX na "true".
Zwróć uwagę, że tekst powyżej węzłów isMine i On State Changed mówi "Local to this client".
Te węzły i wyzwalany dźwięk są wykonywane lokalnie. Chcemy jednak, aby inni uczestnicy wydarzenia doświadczyli tego, co dzieje się z różdżkami. Jest to osiągane przez wstawienie węzła Ustaw zmienną obiektu, który wyświetla tekst "Udostępnione przez wszystkich klientów".
Porada: zmienna isMine znajduje się w skryscie Treść interakcji z siatką.
Włącz efekt cząstek stanu nieaktywnego
Pobieramy przepływ w grupie węzłów o nazwie Sieć startMagic. Celem tej grupy węzłów jest włączenie początkowego efektu cząstek, który pojawia się na wierzchołku różdżki włączonej i wyłączonej. Nazwiemy ten efekt "błyszczącą parą".
Zmiana stanu powoduje przekazanie wartości "true" elementu startFLowVFX do węzła if .
... i powoduje to, że wartość zmiennej obiektu PersistentVFX również ma wartość true, co wyzwala efekt vfx_wand-ethereal_persistent_02 cząstek ("para błyszcząca").
Aktywowanie różdżki
Załóżmy, że uczestnik kliknie lewy przycisk myszy (PC) lub przycisk wyzwalacza kontrolera (Quest). Jest to nazywane "aktywowanie urządzenia wyposażonego". Powoduje to zmianę pozycji awatara, a w grupie węzłów o nazwie Networking isPressed ...
... kliknięcie jest wykrywane przez węzeł Treść z możliwością interakcji z siatką : jest aktywowany . Ten węzeł jest wartością logiczną z wartością domyślną false. Kliknięcie powoduje aktywowanie wartości "true"; węzeł On State Changed przekazuje wartość "true" do węzła If . Powoduje to ustawienie węzła Ustaw zmienną na wartość logiczną isPressed na przeciwieństwo tego, co było wcześniej (więc teraz jest to "prawda").
Porada: zmienna isActivated znajduje się w skryscie Treść interakcji z siatką.
Włącz aktywowany efekt cząstek stanu
Pobieramy przepływ w grupie węzłów o nazwie Spell cast on click (Rzutowanie pisowni).
Ta grupa węzłów wyzwala efekt cząstek fajerwerków na końcu różdżki, która występuje, gdy uczestnik kliknie przycisk i aktywuje różdżę. Po powrocieandy do stanu nieaktywnego ta grupa węzłów zamienia pierwszy efekt cząstek ("błyszcząca para") z powrotem na.
Na wykresie wartość "true" isPressed* powoduje , że węzeł if wyzwala węzeł Ustaw zmienną: obiekt . Ten węzeł ustawia zmienną startGlowVFX na wartość "false".
Spowoduje to ponowne wyzwolenie węzłów w grupie Węzły StartMagic sieci. Tym razem wartość "false" startGlowVFX powoduje wyłączenie efektu cząstek PersistentVFX.
Wróć do rzutowania pisowni w grupie węzłów. Po krótkim okresie ochładzania dźwięk jest odtwarzany, a następnie inny efekt cząstek jest wyzwalany na wierzchołku różdżki: vfx_wand_blast_trail_spheres_01 ("fajerwerki"), który jest wartością zmiennej obiektu ShootTrailVFX .
Włącz efekt cząstki nieaktywnej z powrotem
Po kolejnym krótkim okresie ochładzania wartość logiczna startGlowVFX zostanie zmieniona z powrotem na "true", co zamienia vfx_wand_ethereal_persistent_02 układ cząstek ("błyszcząca para") z powrotem w grupie Networking startMagic .
W tym momencie ramię awatara powraca do pozycji, w którym znajdowało się przed aktywowaniemandy, a błyszcząca para może być ponownie widoczna.
Zwolnij różdżki
Jeśli wand miał typ aktywowania "przełącznik", gdy uczestnik kliknął ponownie, wyzwoli to drugi, inny stan lub zestaw zachowań. Jednak typ aktywowaniaandy to "pojedynczy" i oznacza to, że za każdym razem, gdy uczestnik kliknie ten sam stan lub zestaw zachowań, jest powtarzany.
Aby zwolnićandę, uczestnik naciska Spacja; powoduje to, że różdżka spada na ziemię. Kiedy różdżka nie jest trzymana, nie chcemy, aby efekt błyszczącej cząstki pary działał na wierzchołku różdżki. Węzły w grupie Jeśli nie są zajęte, Wyłącz grupę węzłów Wand wyłącz ten efekt cząstek.
Podczas gdy wandy są przechowywane, wartość Mesh Interactable Body: Get Equipped At* to "DefaultHand". Wartość węzła Equip Location (wartość logiczna) to "Brak". Te dwie wartości są porównywane w węźle Równe (również wartość logiczna), ponieważ nie są takie same, dane wyjściowe wartości Equal są "false" i jeśli węzeł nie jest wyzwalany.
Po usunięciu różdżki wartość Get Equipped At zmieni się na "Brak". Powoduje to, że węzły Equal i If mają zwracać wartość "true". Spowoduje to wyzwolenie węzła Ustaw zmienną: obiekt , który zamienia wartość zmiennej obiektu startGlowVFX na "false".
Po raz kolejny wyzwala węzły w grupie Networking startMagic node i wyłącza efekt cząstek "sparkly vapor" --vfx_wand_ethereal_persistent_02-- który jest wartością zmiennej obiektu PersistantVFX .
Sugestie dotyczące eksperymentowania ze skryptem
- Utwórz różne efekty, które mogą zostać wyzwolone, gdy jeden z istniejących elementów wyposażenia zostanie odebrany i zatrzymany.
- Utwórz nowe wyposażenie, które mogą korzystać z niektórych istniejących efektów. Na przykład niektóre rodzaje fajerwerków mogą używać efektów "sparkle", które są obecnie używane przezand.
- Utwórz różne efekty i zachowania dla nowego urządzenia wyposażonego, które mogą być wyzwalane, gdy element Equippable jest utrzymywany, a lewy przycisk myszy (PC) lub przycisk kontrolera (Quest) jest naciskany. Na przykład zamiast różdżki można mieć wędkę, która rzuca przynętę po naciśnięciu przycisku.
- Zastanów się nad różnicą między przeniesieniem obiektu bezpośrednio do aktywowanego stanu po odebraniu (na przykład przechodzenia do szczegółów) i utworzeniu obiektu, który rozpoczyna się od aktywowania, a następnie przechodzi do jego aktywowanego stanu po kliknięciu przez uczestnika (na przykład tabletu). Utwórz obiekty, które korzystają z obu podejść.