Przewodnik programisty ds. skryptów w chmurze
W tym przewodniku opisano sposób używania interfejsu API tworzenia skryptów w chmurze usługi Mesh i narzędzi deweloperskich do kompilowania środowisk (te zaczynają się od projektów w środowisku Unity, a następnie są przekazywane do kolekcji mesh). Zalecamy najpierw przeczytanie infrastruktury Ustawianie skryptów w chmurze na platformie Azure , aby zapoznać się z pojęciami i podstawową architekturą usługi Mesh Cloud Scripting.
W tej sekcji opisano funkcje i interfejs interfejsu interfejsu API tworzenia skryptów w chmurze usługi Mesh, który służy do pisania skryptów, które napędzają zachowania w środowiskach.
Podstawowa struktura DOM
Struktura DOM odzwierciedla strukturę sceny aparatu Unity. Element członkowski "Scena" aplikacji odpowiada obiektowi gry, do którego jest dołączony składnik Mesh Cloud Scripting. Następujące klasy interfejsu API tworzenia skryptów w chmurze usługi Mesh mapować jeden do jednego z obiektami aparatu Unity utworzonymi w edytorze:
- GameObject (& Transform Component) —> TransformNode
- Jasny składnik —> PointLightNode, SpotLightNode, DirectionalLightNode
- Składnik Animacja —> AnimationNode (i klasy pochodne, zobacz poniżej)
- Składnik zderzaka box —> BoxGeometryNode
- Składnik zderzacz sfery —> SphereGeometryNode
- Składnik zderzacz kapsułek —> CapsuleGeometryNode
- Składnik zderzacz siatki —> MeshGeometryNode
- Składnik Text Mesh Pro —> TextNode
- Sztywny składnikbody —> SztywnyBodyNode
Jeśli na przykład utworzysz scenę z obiektem gry, który ma składnik Light (ustawiony na światło punktowe) i dołączony zderzacz sfery, scena będzie zawierać węzeł TransformNode z dwoma elementami podrzędnymi: PointLightNode i SphereGeometryNode.
Ponadto niektóre obiekty interfejsu API tworzenia skryptów w chmurze usługi Mesh nie mają odpowiednich wbudowanych składników aparatu Unity. Są to dodatkowe składniki, które można utworzyć w środowisku Unity, które są częścią pakietu zestawu narzędzi usługi Mesh.
- Składnik Mesh Cloud Scripting (opisany powyżej)
- Składnik WebSlate
Mapowanie modelu DOM aparatu Unity na dom siatki
Możesz utworzyć scenę ze składnikami, o których interfejs API tworzenia skryptów w chmurze usługi Mesh nie wie. Nie będą one po prostu istnieć w usłudze Mesh Cloud Scripting DOM dla sceny. Jednak pełna struktura sceny obiektów GameObjects będzie dublowana w interfejsie API DOM jako TransformNodes.
Aparat Unity ma kształt interfejsu API gameObject/składnika; Jednak model DOM tworzenia skryptów w chmurze usługi Mesh ma jedną strukturę drzewa. Węzeł TransformNode w interfejsie API tworzenia skryptów w chmurze usługi Mesh zawiera elementy podrzędne, które mogą być innymi węzłami TransformNode lub innymi węzłami mapowymi na składniki. Możemy rozważyć to scaloną listę składników skojarzonego obiektu gry i elementów podrzędnych jego składnika przekształcania.
Przekształć odchylone
Jeśli dodasz składnik, który używa składnika RectTransform — na przykład składnika Text Mesh Pro — obiekt gry nie będzie wyświetlany jako węzeł na wykresie sceny Skrypty chmury siatki. Nadal można przenosić, włączać i wyłączać taki składnik, ale w tym celu należy opakowować obiekt gry za pomocą funkcji RectTransform w innym obiekcie gry przy użyciu zwykłego składnika Transform.
Zdarzenia zmiany właściwości
Zdarzenia zmiany właściwości można subskrybować, wywołując dowolny AddPropertyChangedEventHandler
węzeł w hierarchii. Musisz przekazać nazwę właściwości jako ciąg.
Istnieje również możliwość subskrybowania wszystkich zdarzeń przez subskrybowanie zdarzenia DomObjectPropertyChanged
. Jest to wywoływane, gdy każda właściwość w modelu DOM ulegnie zmianie.
Cykl życia obiektu
Węzły utworzone są nieparzyste. Oznacza to, że nie będą widoczne w scenie, dopóki nie zostaną jawnie dodane jako dziecko do sceny lub jednego z jej elementów potomnych. Podobnie ustawienie elementu nadrzędnego węzła na wartość null spowoduje usunięcie go i jego elementów potomnych ze sceny.
Czasami chcesz tymczasowo wyłączyć węzeł, ale nie zachować rekordu miejsca, w którym znajdował się w scenie. Z tego powodu każdy węzeł ma flagę "aktywne". Gdy zostanie ustawiona wartość false, wyłączy węzeł i jego elementy podrzędne.
Obiekty i składniki gry można tworzyć w apulcie Unity, które są częścią sceny, ale są wyłączone. Będą one wyświetlane jako węzły w hierarchii sceny usługi Mesh Cloud Scripting, ale będą miały ustawioną aktywną flagę na fałsz. Ustawienie aktywnej flagi na true spowoduje włączenie ich w scenie aparatu Unity.
Klonowanie i ponowne wdrażanie
Węzły można klonować i powtarzać w interfejsie API tworzenia skryptów w chmurze usługi Mesh; odpowiednia scena aparatu Unity zostanie odpowiednio zaktualizowana. Jeśli sklonujesz węzeł, sklonuje ten węzeł i wszystkie jego elementy podrzędne (w tym elementy podrzędne, które mogą znajdować się w odpowiednich obiektach aparatu Unity, ale nie są widoczne dla usługi Mesh Cloud Scripting).
Istnieje możliwość klonowania lub ponownego ponownego tworzenia węzłów odpowiadających składnikom aparatu Unity. Jest to implementowane przez ponowne utworzenie tych składników aparatu Unity na podstawie reprezentacji węzła tworzenia skryptów w chmurze usługi Mesh. Tylko węzły, które można utworzyć za pomocą interfejsu API tworzenia skryptów w chmurze usługi Mesh, można sklonować lub powtórzyć. Jeśli utworzono składnik w środowisku Unity i ustawisz pola, które nie są odzwierciedlone w odpowiednim węźle skryptów chmury usługi Mesh, te pola zostaną zresetowane do wartości domyślnych, jeśli sam węzeł zostanie sklonowany. Z tego powodu zalecamy sklonowanie lub ponowne ponowne użycie węzłów przekształcania, w których manipulujesz obiektami utworzonymi w środowisku Unity. Będą one zawsze prawidłowo zachowywać wszystkie oryginalne ustawienia aparatu Unity.
Użytkownicy
W interfejsie API znajdują się różne miejsca, które zapewniają właściwości użytkownika. Właściwość User.Identifier
jest ciągiem identyfikatora trwałego, który jest trwały dla użytkownika, nawet jeśli użytkownik opuści i ponownie dołączy. Nazwa wyświetlana użytkownika jest również dostępna za pośrednictwem adresu User.DisplayName
. Identyfikator zdarzenia, z którego nawiązano połączenie, jest dostępny za pośrednictwem usługi User.ConnectedEventId
.
Podczas opracowywania nazwy wyświetlanej, identyfikatora i identyfikatora zdarzenia użytkownika można wyśmiewać w edytorze składników Usługi Mesh Cloud Scripting w ustawieniach dewelopera, jak pokazano poniżej.
Avatary
Awatary są reprezentacją użytkowników na scenie. Mogą służyć do teleportowania użytkowników do danej lokalizacji, podróży między scenami i wykrywania kolizji z woluminami wyzwalaczy.
Okna dialogowe informacji
W usłudze Mesh Cloud Scripting można wyświetlić okno dialogowe miejsca na ekranie w aplikacji Microsoft Mesh z niestandardowym komunikatem. SceneNode zawiera funkcję dla tego elementu ShowMessageToParticipants(string message, IReadOnlyCollection<Participant> participants)
. Tagi tekstu sformatowanego mogą służyć w wiadomości do kontrolowania właściwości tekstu (kolor, pogrubienie itp.).
Okna dialogowe danych wejściowych
Usługa Mesh Cloud Scripting może żądać wprowadzania tekstu od uczestnika zdarzenia usługi Mesh z niestandardowym komunikatem. CloudApplication
Element udostępnia metodę Task<string> ShowInputDialogToParticipantAsync(string message, Participant participant, CancellationToken token)
. Tagi tekstu sformatowanego mogą służyć w wiadomości do kontrolowania właściwości tekstu (na przykład koloru lub pogrubienia).
Klasy
CloudApplication
Interfejs ICloudApplication
jest punktem wyjścia do tworzenia aplikacji usługi Mesh. Jest ona dostępna w zmiennej "App.cs" jako zmiennej _app. Oprócz sceny ma ICloudApplication
funkcje tworzenia dla wszystkich dostępnych typów. Ma również wiele innych metod, ale są przeznaczone do użytku wewnętrznego.
Wchodzenie w interakcjęnode
MeshInteractableSetup to niestandardowy składnik aparatu Unity, który jest częścią pakietu zestawu narzędzi mesh. Gdy dołączysz go do obiektu gry w aktywność aparatu Unity, spowoduje to wywołanie zdarzeń kliknięcia, gdy każdy użytkownik kliknie dowolny z aktywnych zderzaków w tym obiekcie gry lub jego elementach podrzędnych.
Poniżej przedstawiono prosty przykład, w którym składnik MeshInteractableSetup jest dodawany do tego samego obiektu gry co zderzacz box:
WebSlateNode
WebSlate to niestandardowy składnik aparatu Unity, który jest częścią pakietu zestawu narzędzi mesh. Aby dodać prefab webslate do sceny, wybierz pozycję GameObject>Mesh Toolkit>WebSlate na pasku menu. Witryna internetowa przypisana do właściwości adresu URL wystąpienia webSlate jest renderowana na czworokącie tego prefab.
Poniżej przedstawiono przykład, w którym prefab webSlate został dodany do sceny i przypisany adres URL:
var webSlateNode = Root.FindFirstChild<WebSlateNode>(true);
webSlateNode.Url = new System.Uri("https://en.wikipedia.org/wiki/Color");
Nasłuchiwanie kliknięć
Oto prosty skrypt cloud scripting usługi Mesh, który obraca moduł za każdym razem, gdy jest klikany. Zastąp metodę wycinkową StartAsync
wewnątrz App.cs
tym kodem.
private float _angle = 0;
public Task StartAsync(CancellationToken token)
{
// First we find the TransformNode that corresponds to our Cube gameobject
var transform = _app.Scene.FindFirstChild<TransformNode>();
// Then we find the InteractableNode child of that TransformNode
var sensor = transform.FindFirstChild<InteractableNode>();
// Handle a button click
sensor.Selected += (_, _) =>
{
// Update the angle on each click
_angle += MathF.PI / 8;
transform.Rotation = new Rotation { X = 1, Y = 0, Z = 0, Angle = _angle };
};
return Task.CompletedTask;
}
Informacje o trafieniu
Można dowiedzieć się, który użytkownik kliknął zderzacz, przeglądając argumenty zdarzenia zmiany właściwości. Możesz również odczytać normalny i położenie kontaktu kliknięcia z argumentów zdarzenia. Te współrzędne będą względne względem lokalnej przestrzeni współrzędnych w węźle InteractableNode.
Animatorów
Możesz utworzyć i dodać aparat Unity Animator do sceny i kontrolować go za pomocą usługi Mesh Cloud Scripting. Wtyczka zestawu narzędzi Mesh będzie przeglądać zasoby w projekcie aparatu Unity, a dla każdego znalezionego animatora wygeneruje klasę w folderze "AnimationScripts" w projekcie Mesh Cloud Scripting. Ta klasa pochodzi z AnimationNode i może służyć do kontrolowania animatora z siatki Cloud Scripting. Po dodaniu animatora jako składnika do obiektu gry w a środowisku Unity znajdziesz odpowiednie wystąpienie wygenerowanej klasy jako element podrzędny odpowiedniego węzła TransformNode. Korzystając z interfejsu API tej klasy, możesz kontrolować animatora.
Model programowania Mesh Cloud Scripting jest autorytatywny dla serwera i obsługujemy tylko niewielki podzbiór funkcji Animator. Jest to spowodowane tym, że modelujemy animatora na serwerze i oczekujemy, że wszyscy klienci będą dokładnie synchronizować się z modelem serwera. Z tego powodu obsługiwany jest tylko następujący interfejs API:
- Ustawienie stanu (dla każdej warstwy istnieje odpowiednia właściwość w klasie, którą można ustawić na wyliczenie na podstawie dostępnych stanów w animatorze). Stany są ustawiane natychmiast, a nie przez przejścia.
- Ustawienie zmiennej zmiennoprzecinkowej: uwidocznione są tylko zmienne zmiennoprzecinkowe i tylko w celu powiązania z "Motion Time" w animacji.
- Ustawienie szybkości warstwy
W stanie można utworzyć klip animacji bez ograniczeń dotyczących wartości, które można ustawić w scenie aparatu Unity. Obsługiwane są również sprzężenia klipów animacji. Następujące funkcje animatorów nie są obsługiwane za pośrednictwem węzłów AnimationNodes:
- Przejścia: w przypadku dodawania przejść do animatora nie będzie można ich wyzwolić za pomocą interfejsu API tworzenia skryptów w chmurze usługi Mesh (serwer nie przechodzi w modelu).
- Zmienne (inne niż zmiennoprzecinkowe w celu kierowania czasem ruchu). Zmienne używane do napędzania logiki przejścia lub mnożników szybkości nie są obsługiwane.
- Stany dublowane, Przesunięcie cyklu i IK stóp.
Późne dołączanie i animatorzy
Gdy klienci dołączają do zdarzenia usługi Mesh, synchronizują się z bieżącym stanem i czasem lokalnym wszystkich uruchomionych węzłów animacji. Jeśli masz długotrwałą animację odtwarzaną w stanie, czas odtwarzania zostanie ustawiony na prawidłowy bieżący czas animacji przy późnym sprzężeniu. Jeśli jednak stan zostanie wyzwolony, nie zostaną one wyzwolone w późnym przyłączonym kliencie. Niektóre inne scenariusze mogą nie działać zgodnie z oczekiwaniami; na przykład jeśli wyzwolisz dźwięk, włączając źródło AudioSource na początku stanu, źródło AudioSource będzie nadal włączone w kliencie późnego dołączania, ale rozpocznie odtwarzanie na początku klipu audio.
Stan początkowy animatora
Zalecamy utworzenie animacji, które mają stany domyślne, które nic nie robią. Gdy scena zacznie grać w unity, aktywuje wszystkich Animatorów i zacznie odtwarzać ich domyślne animacje. Może się to zdarzyć przed wystąpieniem połączenia usługi Mesh Cloud Scripting Service; w związku z tym nie ma możliwości synchronizowania tych stanów i zachowania może nie być tak pożądane.
Reparenting i klonowanie animatora
Nie można utworzyć węzłów animacji za pomocą interfejsu API tworzenia skryptów w chmurze usługi Mesh. Jedynym sposobem utworzenia węzła AnimationNode jest wyeksportowanie sceny aparatu Unity zawierającej składnik Animator. Jeśli spróbujesz sklonować lub powtórzyć element AnimationNode, zostanie wyświetlony błąd, ponieważ nie ma możliwości obsługi tej akcji. Nadal istnieje możliwość sklonowania lub ponownego ponownego sklonowania elementu nadrzędnego węzła AnimationNode, ponieważ odpowiada to zawierającemu obiektowi gry aparatu Unity, który można sklonować i zastosować element nadrzędny.
Uwagi dotyczące wygenerowanego kodu
Wygenerowany kod usunie spacje z nazw animatorów, warstw, stanów i zmiennych; na przykład nazwa zmiennej "my var" staje się "myVar" w kodzie. W związku z tym można utworzyć animatorów, którzy nie będą generować prawidłowego kodu. Jeśli na przykład masz dwie zmienne o nazwie "my var" i "myVar", podczas generowania wystąpi błąd i zostanie wyświetlony komunikat z prośbą o zmianę nazw zmiennych.
LightNode
PointLightNode, DirectionalLightNode i SpotLightNode wszystkie mapują na składnik Unity Light (który będzie miał jego typ ustawiony na odpowiadającą wartość). Można ustawić podstawowe parametry tych świateł za pomocą interfejsów API LightNode. Można również utworzyć światła ręcznie za pomocą interfejsu API. Tworzenie węzłów świetlnych za pośrednictwem interfejsu API spowoduje pozostawienie parametrów, które nie są ustawiane za pomocą interfejsu API tworzenia skryptów w chmurze usługi Mesh do ich wartości domyślnych.
GeometryNode
BoxGeometryNode, SphereGeometryNode, CapsuleGeometryNode i MeshGeometryNode mapuje odpowiednio na mapę składnika Box Collider Aparatu Unity, składnika zderzaczy sfery, składnika zderzaczy kapsułek i składnika zderzaczki siatki. Można je również utworzyć za pomocą interfejsu API tworzenia skryptów w chmurze usługi Mesh. Włączenie i wyłączenie węzłów geometrycznych spowoduje dodanie i usunięcie ich z kandydatów trafienia, jeśli element MeshInteractableSetup jest dołączony do ich obiektu gry lub jednego z jego elementów nadrzędnych.
Tworzenie węzłów geometrycznych za pośrednictwem interfejsu API spowoduje pozostawienie parametrów, które nie są ustawiane za pośrednictwem interfejsu API usługi Mesh do wartości domyślnych (na przykład materiał fizyki zostanie ustawiony na wartość none i parametr isTrigger zostanie ustawiony na wartość false).
RigidBodyNode
Dodanie składnika Sztywna osoba do obiektu spowoduje umieszczenie ruchu pod kontrolą fizyki siatki. Bez dodawania kodu obiekt Sztywna osoba zostanie pociągnięty w dół przez grawitację i będzie reagować na kolizje z innymi obiektami.
Uwaga: GeometryNode.Friction
zwróci wartość staticFriction
. Jeśli jednak zostanie ustawiona po stronie tworzenia skryptów w chmurze usługi Mesh, zaktualizuje zarówno klientów, jak staticFriction
i dynamicFriction
na klientach.
Wyzwalanie woluminów
Węzły geometryczne mogą działać jako woluminy wyzwalacza, gdy ich IsTrigger
właściwość jest ustawiona na wartość true. Ta flaga odpowiada IsTrigger
właściwości zderzaczowi w środowisku Unity i nie można jej zmienić w czasie wykonywania. Gdy geometria jest wyzwalaczem, wygeneruje Entered
i Exited
dla wszystkich Awatarów, które zaczynają/przestają się nakładać.
Uwaga: obiekt Unity musi zostać dodany do TriggerVolume
warstwy, aby umożliwić ignorowanie promieniowania teleportu, ponieważ zderzacze w warstwie Default
blokują belkę teleportu.
TextNode
TextNode mapuje na składnik TextMeshPro aparatu Unity. Jeśli dodasz składnik TextMeshPro do sceny, w hierarchii sceny usługi Mesh będzie znajdować się odpowiedni element TextNode. Umożliwia to ustawienie tekstu składnika w czasie wykonywania. Możesz również zmienić podstawowe właściwości tekstu za pomocą interfejsu API textNode — pogrubienia, kursywy, podkreślenie, przekreślenie i kolor. Obecnie nie można utworzyć węzła TextNode za pomocą interfejsu API; należy je utworzyć, dodając je do sceny w aucie Unity. Ponadto nie można bezpośrednio sklonować węzła TextNode — należy sklonować nadrzędny TranformNode węzła TextNode.
Siatki
Siatki są obecnie "ukrytymi" składnikami interfejsu API tworzenia skryptów w chmurze usługi Mesh. Można je utworzyć w edytorze aparatu Unity i można nimi manipulować, manipulując obiektami gier nadrzędnych/składnikami przekształcania, ale nie można ich tworzyć programowo ani nie można edytować ich właściwości w czasie wykonywania za pośrednictwem interfejsu API usługi Mesh.
Skrypty wizualne
Możesz utworzyć i dodać maszynę skryptu aparatu Unity do sceny i kontrolować ją za pomocą usługi Mesh Cloud Scripting. Wtyczka zestawu narzędzi mesh będzie przeglądać zasoby w projekcie aparatu Unity, a dla każdej znalezionej maszyny skryptów wygeneruje klasę w folderze "VisualScripts" w projekcie usługi Mesh Cloud Scripting. Ta klasa pochodzi z visualScriptNode i może służyć do manipulowania zmiennymi aparatu Unity skojarzonymi z maszyną skryptów z usługi Mesh Cloud Scripting. Po dodaniu maszyny skryptów jako składnika do obiektu GameObject w a unity znajdziesz odpowiednie wystąpienie wygenerowanej klasy jako element podrzędny odpowiedniego węzła TransformNode. Za pomocą interfejsu API tej klasy można kontrolować zmienne maszyny skryptu.
Synchronizacja stanu
Domyślnie usługa Mesh automatycznie replikuje zmiany sceny wykonywane przez skrypty wizualne na jednym kliencie do wszystkich innych klientów. Aby skrypty usługi Mesh Cloud Scripting wiedziały o zmianie wprowadzonej za pomocą skryptów wizualnych, należy spełnić następujące warunki wstępne:
- Składnik Script Machine znajduje się w obiekcie GameObject, który jest elementem potomnym katalogu głównego sceny skryptów w chmurze usługi Mesh.
- Opcja "Włącz tworzenie skryptów wizualnych" składnika Mesh Cloud Scripting jest włączona.
Jeśli którykolwiek z powyższych warunków nie zostanie spełniony, środowisko uruchomieniowe tworzenia skryptów wizualnych usługi Mesh będzie nadal replikować zmiany sceny, ale skrypty usługi Mesh Cloud Scripting pozostaną nieświadome tych zmian.
Stan początkowy
Zalecamy, aby skrypty wizualne nie modyfikowały ani nie polegały na stanie udostępnionym podczas uruchamiania. Zdarzenie Przy uruchamianiu zwykle odbywa się przed wystąpieniem połączenia usługi Mesh Cloud Scripting Service. W związku z tym nie ma możliwości synchronizacji stanu w tym momencie i zachowanie może nie być pożądane.
Późne sprzężenie
Gdy klienci dołączają do zdarzenia usługi Mesh, synchronizują się z bieżącym stanem wszystkich węzłów skryptu wizualnego. Każde zdarzenie zmiany stanu, które mogło zostać wcześniej zgłoszone na innych klientach, nie będzie zgłaszane na późnym przyłączonym kliencie. Niektóre inne scenariusze mogą nie działać zgodnie z oczekiwaniami; na przykład jeśli wyzwolisz dźwięk, włączając źródło audio w odpowiedzi na zdarzenie Zmiany stanu włączonego, źródło AudioSource będzie nadal włączone w późnym kliencie sprzężenia, ale rozpocznie odtwarzanie na początku klipu audio.
Reparenting and cloning (Ponowne wdrażanie i klonowanie)
Nie można utworzyć elementu VisualScriptNode za pomocą interfejsu API tworzenia skryptów w chmurze usługi Mesh. Jedynym sposobem utworzenia elementu VisualScriptNode jest wyeksportowanie sceny aparatu Unity zawierającej składnik maszyny skryptów. Jeśli spróbujesz sklonować lub powtórzyć element VisualScriptNode, wystąpi błąd, ponieważ nie ma możliwości obsługi tej akcji. Nadal można sklonować lub ponownie sklonować element nadrzędny programu VisualScriptNode, ponieważ odpowiada to elementowi zawierającemu obiekt GameObject aparatu Unity, który można sklonować i wyjąć.
Uwagi dotyczące wygenerowanego kodu
Wygenerowany kod usunie spacje z nazw maszyn skryptów i zmiennych; na przykład nazwa zmiennej "my var" staje się "MyVar" w kodzie. W związku z tym można utworzyć maszyny skryptów, które nie będą generować prawidłowego kodu. Jeśli na przykład masz dwie zmienne o nazwie "my var" i "myVar", podczas generowania wystąpi błąd i zostanie wyświetlony komunikat z prośbą o zmianę nazw zmiennych.
Inne tematy dotyczące skryptów chmury usługi Mesh
Dodawanie zasobów do usługi Mesh Cloud Scripting Service
Jeśli musisz dodać zasób dla usługi Mesh Cloud Scripting Service do użycia, musisz dodać go jako zasób osadzony do pliku projektu C#. Można to zrobić za pomocą interfejsu użytkownika projektu w programie Visual Studio lub bezpośrednio dodając następujący wiersz do pliku csproj:
<EmbeddedResource Include="<my_resource_file>" CopyToOutputDirectory="PreserveNewest" />
Należy pamiętać, że w ten sposób jest spakowany plik scene.map, który można zobaczyć w pliku csproj do celów referencyjnych.
Praca z fizyką siatki
Mesh Physics
będzie dbać o synchronizację ruchu sztywnych ciał między klientami. Usługa Mesh Cloud Scripting TransformNode.Position
, RigidBody.Velocity
TransformNode.Rotation
i RigidBody.AngularVelocity
nie zostanie zaktualizowana o najnowszy stan symulacji. Jednak klienci będą stosować zmiany, jeśli są one ustawione w usłudze Mesh Cloud Scripting Service. Należy pamiętać, że zmiana pojedynczej właściwości pozostawi inne niezmienione. Na przykład jeśli tylko pozycja jest ustawiona, prędkość nie zostanie zmieniona, a sztywny korpus będzie kontynuować ruch ze starą prędkością z nowej pozycji. Biorąc pod uwagę, że usługa Mesh Cloud Scripting Service nie jest aktualizowana przy użyciu najnowszego stanu ruchu dla sztywnych ciał, zaleca się ustawienie tych tylko dla nowych sztywnych ciał.
RigidBodyNode
W przypadku TransformNode
klonowania sklonowana treść zostanie zarejestrowana i przekazana do Mesh Physics
synchronizacji między klientami. Uwaga: Sklonowany sztywny korpus będzie miał położenie, rotację i przydziały od początku sceny oryginalnego sztywnego ciała. Jeśli powinny one być inne, należy je jawnie ustawić w usłudze Mesh Cloud Scripting.