Bulut Betiği programcı kılavuzu
Bu kılavuzda, Ortamlar oluşturmak için Mesh Bulut Betik API'sinin ve geliştirici araçlarının nasıl kullanılacağı açıklanır (bunlar Unity'de projeler olarak başlar ve ardından bir Mesh Koleksiyonuna yüklenir). Mesh Bulut Betiği oluşturma kavramlarını ve temel mimarisini öğrenmek için önce Azure'da Bulut Betik altyapısı ayarlama bölümünü okumanızı öneririz.
Bu bölümde, Ortamlarda davranışları yönlendiren betikleri yazmak için kullanılan Mesh Bulut Betiği API'sinin özellikleri ve arabirimi açıklanmaktadır.
Temel DOM yapısı
DOM yapısı Unity sahnenizin yapısını yansıtır. Uygulamanın "Sahne" üyesi, Mesh Bulut Betik bileşeninizin bağlı olduğu oyun nesnesine karşılık gelir. Aşağıdaki Mesh Cloud Scripting API sınıfları, düzenleyicide oluşturulan Unity nesneleriyle bire bir eşler:
- GameObject (&Transform Bileşeni) -> TransformNode
- Hafif Bileşen -> PointLightNode, SpotLightNode, DirectionalLightNode
- Animator Bileşeni -> AnimationNode (ve türetilmiş sınıflar, aşağıya bakın)
- Kutu Harmanlama Bileşeni -> BoxGeometryNode
- Sphere Collider Bileşeni -> SphereGeometryNode
- Kapsül Collider Bileşeni -> CapsuleGeometryNode
- Mesh Collider Bileşeni -> MeshGeometryNode
- Text Mesh Pro Bileşeni -> TextNode
- Sert Gövde Bileşeni -> RigidBodyNode
Örneğin, Açık bileşeni (nokta ışığına ayarlanmış) ve küre collider takılı bir oyun nesnesiyle bir sahne oluşturursanız, sahneniz iki alt öğeli bir TransformNode içerir: PointLightNode ve SphereGeometryNode.
Ayrıca, bazı Mesh Bulut Betiği API'leri nesnelerinin karşılık gelen yerleşik Unity bileşenleri yoktur. Bunlar, Unity'de Mesh araç seti paketinin parçası olan ek bileşenlerdir.
- Mesh Bulut Betik bileşeni (Yukarıda açıklanmıştır)
- WebSlate bileşeni
Unity DOM'yi Mesh DOM'a eşleme
Mesh Bulut Betik Oluşturma API'sinin bilmediği bileşenlerle bir sahne oluşturabilirsiniz. Bunlar, sahne için Mesh Bulut Betiği OLUŞTURMA DOM'unda mevcut olmayacaktır. Ancak, GameObjects'in tam sahne yapısı DOM API'sinde TransformNodes olarak yansıtılır.
Unity'nin bir GameObject/bileşen API'si şekli vardır; ancak Mesh Cloud Scripting DOM tek bir ağaç yapısına sahiptir. Mesh Bulut Betik API'sindeki Bir TransformNode,diğer TransformNode'lar veya bileşenlerle eşlenen diğer Düğümler olabilecek alt öğelere sahiptir. Bunu, ilişkili oyun nesnesinin bileşenlerinin ve dönüşüm bileşeninin alt öğelerinin birleştirilmiş bir listesi olarak değerlendirebiliriz.
Rect Dönüşümü
RectTransform kullanan bir bileşen eklerseniz (örneğin, Text Mesh Pro bileşeni), oyun nesnesi Mesh Bulut Betiği sahne grafiğinde Düğüm olarak görünmez. Böyle bir bileşeni taşımak, etkinleştirmek ve devre dışı bırakmak mümkündür, ancak bunu yapmak için normal Transform bileşenini kullanarak başka bir oyun nesnesinde RectTransform kullanarak oyun nesnesini sarmalamanız gerekir.
Özellik değiştirme olayları
Hiyerarşideki herhangi bir düğümde çağırarak AddPropertyChangedEventHandler
özellik değişikliği olaylarına abone olabilirsiniz. Özelliğin adını dize olarak geçirmeniz gerekir.
Ayrıca, olaya abone olarak tüm olaylara abone olmak DomObjectPropertyChanged
da mümkündür. DOM'daki herhangi bir özellik değiştiğinde bu çağrılır.
Nesne yaşam döngüsü
Düğümler oluşturulduğunda ayrıştırılmaz. Bu, sahnenin alt öğesi olarak veya alt öğelerinden biri olarak açıkça eklenene kadar sahnede görünmeyecekleri anlamına gelir. Benzer şekilde, bir düğümün üst öğesini null olarak ayarlamak, düğümü ve alt öğelerini sahneden kaldırır.
Bazen bir düğümü geçici olarak devre dışı bırakmak isteyebilirsiniz ancak sahnenin neresinde olduğunu kaydetmek istemezsiniz. Bu nedenle her Düğümün "etkin" bayrağı vardır. false olarak ayarlandığında düğümü ve alt öğeleri devre dışı bırakır.
Unity'de sahnenin parçası olan ancak devre dışı bırakılan oyun nesneleri ve bileşenleri oluşturabilirsiniz. Bunlar Mesh Bulut Betiği sahne hiyerarşisinde Düğümler olarak görünür ancak etkin bayrakları false olarak ayarlanır. Etkin bayrağın true olarak ayarlanması Unity sahnesinde bunları etkinleştirir.
Kopyalama ve yeniden ayrışma
Düğümler Mesh Bulut Betik API'sinde kopyalanabilir ve yeniden ayrıştırılabilir; karşılık gelen Unity sahnesi buna göre güncelleştirilir. Bir düğümü klonlarsanız, bu düğüm ve tüm alt öğeleri (karşılık gelen Unity nesnelerinde bulunabilecek ancak Mesh Bulut Betiği'nde görünmeyen alt öğeler dahil) klonlar.
Unity Bileşenlerine karşılık gelen Düğümleri kopyalamak veya yeniden ayrıştırmak mümkündür. Bu, Bu Unity bileşenleri Mesh Bulut Betik Düğümü gösterimlerine göre yeniden oluşturarak uygulanır. Yalnızca Mesh Bulut Betiği Oluşturma API'si aracılığıyla oluşturulabilen düğümler kopyalanabilir veya yeniden ayrıştırılabilir. Unity'de bir bileşen oluşturduysanız ve karşılık gelen Mesh Bulut Betik Düğümüne yansıtılmayan alanları ayarladıysanız, Düğümün kendisi kopyalanırsa bu alanlar varsayılan değerlerine sıfırlanır. Bu nedenle Unity'de oluşturulan nesneleri değiştirdiğiniz Dönüştürme Düğümlerini kopyalamanızı veya yeniden ayrıştırmanızı öneririz. Bunlar, tüm özgün Unity ayarlarını her zaman doğru şekilde tutar.
Kullanıcılar
API'de Kullanıcı özellikleri sağlayan çeşitli yerler vardır. User.Identifier
özelliği, kullanıcı ayrılıp yeniden katılsa bile kullanıcı için kalıcı olan kalıcı bir tanımlayıcı dizesidir. Kullanıcının görünen adına üzerinden de erişilebilir User.DisplayName
. Kullanıcının bağlandığı olay kimliğine üzerinden User.ConnectedEventId
erişilebilir.
Geliştirme sırasında kullanıcı görünen adı, tanımlayıcısı ve olay kimliği, aşağıda gösterildiği gibi "Geliştirici Ayarları" içindeki Mesh Bulut Betiği bileşeni düzenleyicisinde sahte olarak kullanılabilir.
Avatar
Avatarlar, sahnedeki kullanıcıların temsilidir. Kullanıcıları belirli bir konuma ışınlama, sahneler arasında seyahat etme ve tetikleyici birimleriyle çakışmaları algılamak için kullanılabilir.
Bilgi İletişim Kutuları
Mesh Bulut Betiği'nde Microsoft Mesh uygulamasında özel bir iletiyle bir ekran alanı iletişim kutusu açmak mümkündür. SceneNode bunun için bir işlev içerir. ShowMessageToParticipants(string message, IReadOnlyCollection<Participant> participants)
Zengin metin etiketleri , iletide metin özelliklerini (renk, kalın vb.) denetlemek için kullanılabilir.
Giriş İletişim Kutuları
Mesh Bulut Betiği, özel bir iletiyle Mesh etkinliğindeki bir katılımcıdan metin girişi isteyebilir. CloudApplication
yöntemini Task<string> ShowInputDialogToParticipantAsync(string message, Participant participant, CancellationToken token)
sağlar. Zengin metin etiketleri , iletide metin özelliklerini (örneğin, renk veya kalın) denetlemek için kullanılabilir.
Sınıflar
CloudApplication
ICloudApplication
Arabirim, Mesh uygulamaları geliştirmek için başlangıç noktasıdır. "App.cs" içinde _app değişkeni olarak kullanılabilir. Sahnenin yanı sıra, ICloudApplication
kullanılabilir tüm türler için işlevler de oluşturur. Ayrıca bir dizi başka yöntemi de vardır, ancak bunlar dahili kullanım içindir.
InteractableNode
MeshInteractableSetup, Mesh araç seti paketinin parçası olan özel bir Unity bileşenidir. Unity'deki bir oyun nesnesine eklediğinizde, herhangi bir kullanıcı bu oyun nesnesindeki veya alt öğelerindeki etkin harmanlanabilir öğelerden birine tıkladığında tıklama olaylarını tetikler.
Aşağıda, MeshInteractableSetup bileşeninin kutu harmanlama ile aynı oyun nesnesine eklendiği basit bir örnek gösterilmiştir:
WebSlateNode
WebSlate, Mesh araç seti paketinin parçası olan özel bir Unity bileşenidir. Sahnenize bir WebSlate prefab eklemek için menü çubuğundan GameObject>Mesh Toolkit>WebSlate öğesini seçin. WebSlate örneğinin URL özelliğine atanan web sitesi, bu ön güncelleştirmenin dörtlüsünün üzerinde işlenir.
Aşağıda, bir WebSlate prefabrik öğesinin görünüme eklendiği ve url atandığı bir örnek gösterilmiştir:
var webSlateNode = Root.FindFirstChild<WebSlateNode>(true);
webSlateNode.Url = new System.Uri("https://en.wikipedia.org/wiki/Color");
Tıklamaları dinleme
Küp her tıkıldığında döndüren basit bir Mesh Bulut Betiği betiği aşağıdadır. içindeki App.cs
saplama StartAsync
yöntemini bu kodla değiştirin.
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;
}
İsabet Bilgileri
Özellik değişikliği olayı bağımsız değişkenlerine bakarak hangi kullanıcının collider'a tıklamış olduğunu bulmak mümkündür. Ayrıca, olay bağımsız değişkenlerinden kişi normal ve tıklama konumunu da okuyabilirsiniz. Bu koordinatlar InteractableNode'un yerel koordinat alanına göre olacaktır.
Animatörler
Bir Unity Animator oluşturup sahnenize ekleyebilir ve Mesh Cloud Scripting aracılığıyla bunu denetleyebilirsiniz. Mesh araç seti eklentisi Unity projenizdeki varlıklara bakar ve bulunan her Animator için Mesh Bulut Betiği projenizdeki "AnimationScripts" klasöründe bir sınıf oluşturur. Bu sınıf AnimationNode'dan türetilir ve Animator'ı Mesh Bulut Betiği'nden denetlemek için kullanılabilir. Animator'ı Unity'deki bir oyun nesnesine bileşen olarak eklediğinizde, oluşturulan sınıfın ilgili TransformNode öğesinin alt öğesi olarak karşılık gelen bir örneğini bulursunuz. Bu sınıfın API'sini kullanarak Animator'ı denetleyebilirsiniz.
Mesh Bulut Betiği programlama modeli sunucu yetkilidir ve Animator işlevinin yalnızca küçük bir alt kümesini destekleriz. Bunun nedeni, sunucudaki Animator'ı modellememiz ve tüm istemcilerin sunucu modeline doğru şekilde eşitlenmesini beklememizdir. Bu nedenle şu anda yalnızca aşağıdaki API desteklenmektedir:
- Durum ayarı (her katman için sınıfında Animator'daki kullanılabilir durumlara göre bir sabit listesi olarak ayarlanabilen ilgili bir özellik vardır). Durumlar geçişler aracılığıyla değil, hemen ayarlanır.
- Kayan değişken ayarı: Yalnızca float değişkenleri kullanıma sunulur ve yalnızca Animator'da "Hareket Zamanı"na bağlama amacıyla kullanılır.
- Katman hızı ayarı
Bir durumda, Unity sahnesinde ayarlayabileceğiniz değerler üzerinde hiçbir kısıtlama olmadan bir Animasyon Klibi oluşturabilirsiniz. Döngü Animasyon Klipleri de desteklenir. Animators'ın aşağıdaki özellikleri AnimationNodes aracılığıyla desteklenmez:
- Geçişler: Animator'ınıza geçişler eklerseniz, Bunları Mesh Bulut Betiği OLUŞTURMA API'si aracılığıyla tetikleyemezsiniz (sunucu geçişleri modellemez).
- Değişkenler (Hareket süresini yönlendirmek için kayanlar dışında). Geçiş mantığını veya hız çarpanlarını yönlendirmek için kullanılan değişkenler desteklenmez.
- Yansıtılmış durumlar, Döngü uzaklığı ve ayak IK.
Late Join ve Animators
İstemciler bir Mesh Olayına katıldığında, çalışan tüm Animasyon Düğümlerinin geçerli durumu ve yerel saatiyle eşitlenir. Bir durumda uzun süre çalışan bir animasyon oynatılıyorsa, kayıttan yürütme süresi geç birleşimde animasyonun doğru geçerli zamanına ayarlanır. Ancak, durumunuz olayları tetiklerse, bunlar geç katılmış istemcide TETIKLENMEZ. Diğer bazı senaryolar beklendiği gibi çalışmayabilir; örneğin, bir durumun başlangıcında bir AudioSource'ı etkinleştirerek bir ses tetiklerseniz, bu AudioSource geç katılma istemcisinde etkinleştirilmeye devam eder, ancak ses klibinin başında çalmaya başlar.
Animator ilk durumu
Hiçbir şey yapmayan varsayılan durumlara sahip Animator'lar oluşturmanızı öneririz. Unity'de bir sahne oynatıldığında, tüm Animator'ları etkinleştirir ve varsayılan animasyonlarını oynatmaya başlar. Bu, Mesh Bulut Betik Hizmeti bağlantısı gerçekleşmeden önce gerçekleşebilir; bu nedenle, bu durumları eşitlemenin hiçbir yolu yoktur ve davranış istenen şekilde olmayabilir.
Animator reparenting ve cloning
AnimationNodes, Mesh Bulut Betik API'si aracılığıyla oluşturulamaz. AnimationNode oluşturmanın tek yolu, Animator bileşeni içeren unity sahnesini dışarı aktarmaktır. AnimationNode'ı kopyalamaya veya yeniden ayrıştırmaya çalışırsanız, bu eylemi desteklemenin bir yolu olmadığından hata alırsınız. Yine de AnimationNode'un üst öğesini kopyalamak veya yeniden ayrıştırmak mümkündür, çünkü bu kopyalanıp üst öğesi oluşturulabilen unity oyun nesnesine karşılık gelir.
Oluşturulan Kodla ilgili notlar
Oluşturulan kod Animators, Layers, States ve Variables adlarından boşluk kaldırır; örneğin, değişken adı "my var" kodda "myVar" olur. Bu nedenle, geçerli kod oluşturmayan Animator'lar oluşturmak mümkündür. Örneğin, "my var" ve "myVar" adlı iki değişkeniniz varsa, oluşturma sırasında bir hata ve değişkenleri yeniden adlandırmanızı isteyen bir ileti alırsınız.
LightNode
PointLightNode, DirectionalLightNode ve SpotLightNode değerlerinin tümü Unity Light bileşeniyle eşlenir (türü ilgili değere ayarlanır). LightNode API'leri aracılığıyla bu ışıkların temel parametrelerini ayarlamak mümkündür. Ayrıca API aracılığıyla el ile Işıklar oluşturmak da mümkündür. API aracılığıyla hafif düğümler oluşturmak, Mesh Bulut Betik API'si aracılığıyla ayarlanamaz parametreleri varsayılanlarına bırakır.
GeometryNode
BoxGeometryNode, SphereGeometryNode, CapsuleGeometryNode ve MeshGeometryNode sırasıyla Unity'nin Box Collider Bileşeni, Sphere Collider Bileşeni, Kapsül Harmanlama Bileşeni ve Mesh Collider Bileşeni ile eşlenmiştir. Bunlar Mesh Bulut Betik OLUŞTURMA API'si aracılığıyla da oluşturulabilir. Geometri Düğümlerinin etkinleştirilmesi ve devre dışı bırakılması, oyun nesnesine veya üst öğelerinden birine bir MeshInteractableSetup eklendiğinde bunları isabet adaylarına ekler ve kaldırır.
API aracılığıyla geometri düğümleri oluşturmak, Mesh API'sinde ayarlanmayan parametreleri varsayılan değerlerine bırakır (örneğin, Fizik Malzemesi yok ve isTrigger false olarak ayarlanır).
RigidBodyNode
Bir nesneye Bir Rigidbody bileşeni eklemek, hareketini Mesh Fiziği'nin kontrolü altına alır. Herhangi bir kod eklemeden, bir Rigidbody nesnesi yerçekimi tarafından aşağı doğru çekilir ve diğer nesnelerle çarpışmalara tepki verir.
Not: GeometryNode.Friction
döndürür staticFriction
. Ancak Mesh Bulut Betiği tarafında ayarlanırsa hem istemcilerde hem de staticFriction
dynamicFriction
istemcilerde güncelleştirilir.
Birimleri tetikleme
Geometri düğümleri IsTrigger
, özellikleri true olarak ayarlandığında tetikleyici birimleri olarak görev yapabilir. Bu bayrak Unity'deki collider özelliğine karşılık gelir IsTrigger
ve çalışma zamanında değiştirilemez. Geometri bir tetikleyici olduğunda ve Exited
onunla çakışan tüm Avatarlar için oluştururEntered
/durur.
Not: Katmandaki harmanlayıcılar ışın ışınını TriggerVolume
engellediğinden, ışın ışınını yoksayabilmesi için Unity nesnesinin Default
katmana eklenmesi gerekir.
TextNode
TextNode, Unity'nin TextMeshPro bileşeniyle eşler. Sahnenize bir TextMeshPro bileşeni eklerseniz Mesh Bulut Betiği sahne hiyerarşinizde buna karşılık gelen bir TextNode olur. Bu, çalışma zamanında bileşenin metnini ayarlamanıza olanak tanır. Ayrıca TextNode API'sinde kalın, italik, altı çizili, üstü çizili ve renk gibi temel metin özelliklerini değiştirebilirsiniz. Şu anda API aracılığıyla TextNode oluşturmak mümkün değildir; Bunları Unity'de sahnenize ekleyerek oluşturmanız gerekir. Ayrıca, bir TextNode'yi doğrudan kopyalayamazsınız; bunun yerine TextNode'un üst TranformNode'unu kopyalamanız gerekir.
Ağ yapıları
Kafesler şu anda Mesh Bulut Betik API'sinde "gizli" bileşenlerdir. Unity düzenleyicisinde oluşturulabilirler ve üst oyun nesneleri/Dönüşüm bileşenleri işlenerek işlenebilirler, ancak program aracılığıyla oluşturulamaz ve özellikleri Mesh API'si aracılığıyla çalışma zamanında düzenlenemez.
Görsel Betikler
Bir Unity Betik Makinesi oluşturup sahnenize ekleyebilir ve Mesh Bulut Betiği Oluşturma aracılığıyla denetleyebilirsiniz. Mesh araç seti eklentisi Unity projenizdeki varlıklara bakar ve bulunan her Betik Makinesi için Mesh Bulut Betiği projenizdeki "VisualScripts" klasöründe bir sınıf oluşturur. Bu sınıf VisualScriptNode'dan türetilir ve Mesh Bulut Betiği'nden Betik Makinesi ile ilişkili Unity değişkenlerini işlemek için kullanılabilir. Betik Makinesini Unity'de bir GameObject bileşeni olarak eklediğinizde, oluşturulan sınıfın ilgili TransformNode öğesinin alt öğesi olarak ilgili bir örneğini bulursunuz. Bu sınıfın API'sini kullanarak Betik Makinesi'nin değişkenlerini denetleyebilirsiniz.
Durum eşitlemesi
Varsayılan olarak Mesh, bir istemcideki görsel betikler tarafından yapılan sahne değişikliklerini otomatik olarak diğer tüm istemcilere çoğaltır. Mesh Bulut Betiği'nin görsel betik aracılığıyla yapılan bir değişikliğin farkında olması için aşağıdaki önkoşulların karşılanması gerekir:
- Betik Makinesi bileşeni, Mesh Bulut Betik oluşturma sahne kökünün alt öğelerinden biri olan bir GameObject üzerindedir.
- Mesh Bulut Betiği bileşeninin "Görsel Betiği Etkinleştir" seçeneği etkinleştirilir.
Yukarıdaki koşullardan biri karşılanmazsa, Mesh Görsel Betik çalışma zamanı sahne değişikliklerini çoğaltmaya devam eder, ancak Mesh Bulut Betiği oluşturma bu değişikliklere karşı gizli kalır.
Başlangıç durumu
Görsel betiklerinizin başlangıçtaki paylaşılan durumu değiştirmesini veya kullanmamalarını öneririz. Başlangıçta olayı genellikle Mesh Bulut Betik Hizmeti bağlantısı gerçekleşmeden önce gerçekleşir; bu nedenle, bu noktada durumu eşitlemenin hiçbir yolu yoktur ve davranış istediğiniz gibi olmayabilir.
Geç Katılma
İstemciler bir Mesh Olayına katıldığında, tüm Görsel Betik düğümlerinin geçerli durumuyla eşitlenir. Daha önce diğer istemcilerde tetiklenmiş olabilecek Durum Değişikliği olayları, geç katılmış istemcide tetiklenmez. Diğer bazı senaryolar beklendiği gibi çalışmayabilir; örneğin, Durum Değişti olayına yanıt olarak Bir SesKaynağı'nı etkinleştirerek bir ses tetiklerseniz, bu AudioSource geç katılma istemcisinde etkinleştirilmeye devam eder, ancak ses klibinin başında çalmaya başlar.
Yeniden ayrışma ve kopyalama
VisualScriptNode , Mesh Bulut Betik API'si aracılığıyla oluşturulamaz. VisualScriptNode oluşturmanın tek yolu, Betik Makinesi bileşeni içeren bir Unity sahnesini dışarı aktarmaktır. VisualScriptNode'ı kopyalamaya veya yeniden ayrıştırmaya çalışırsanız, bu eylemi desteklemenin bir yolu olmadığından hata alırsınız. Yine de VisualScriptNode'un üst öğesini kopyalamak veya yeniden ayrıştırmak mümkündür, çünkü bu kopyalanabilir ve üst öğesi oluşturulabilen unity GameObject'i içerir.
Oluşturulan Kodla ilgili notlar
Oluşturulan kod, Betik Makineleri ve değişkenlerin adlarından boşluk kaldırır; örneğin, "var" değişken adı kodda "MyVar" olur. Bu nedenle, geçerli kod oluşturmayan Betik Makineleri oluşturmak mümkündür. Örneğin, "my var" ve "myVar" adlı iki değişkeniniz varsa, oluşturma sırasında bir hata ve değişkenleri yeniden adlandırmanızı isteyen bir ileti alırsınız.
Diğer Mesh Bulut Betik oluşturma konuları
Mesh Bulut Betik Hizmeti'ne kaynak ekleme
Mesh Bulut Betik Hizmetinizin kullanması için bir kaynak eklemeniz gerekiyorsa, bunu C# proje dosyanıza eklenmiş bir kaynak olarak eklemeniz gerekir. Bu, Visual Studio'daki proje kullanıcı arabirimi aracılığıyla veya .csproj dosyasına doğrudan aşağıdaki satırı ekleyerek yapılabilir:
<EmbeddedResource Include="<my_resource_file>" CopyToOutputDirectory="PreserveNewest" />
Başvuru için .csproj dosyasında görebileceğiniz scene.map dosyasının bu şekilde paketlendiğini unutmayın.
Mesh Fiziği ile Çalışma
Mesh Physics
, katı gövdelerin hareketini istemciler arasında eşitlemeye özen gösterir. Mesh Bulut Betiği Oluşturma TransformNode.Position
, TransformNode.Rotation
ve RigidBody.AngularVelocity
RigidBody.Velocity
en son simülasyon durumuyla güncelleştirilmez. Ancak, bunlar Mesh Bulut Betik Hizmeti'nde ayarlanırsa istemciler değişiklik uygular. Tek özelliğin değiştirilmesinin diğerlerini değiştirmeden bırakacağını unutmayın. Örneğin, yalnızca konum ayarlanırsa hız değiştirilmez ve sert gövde yeni konumdan eski hız ile hareket eder. Mesh Bulut Betik Hizmeti'nin rijit gövdeler için en son hareket durumuyla güncelleştirilmediği göz önünde bulundurulduğunda, bunları yalnızca yeni katı gövdeler için ayarlamanız tavsiye edilir.
TransformNode
ile RigidBodyNode
kopyalanırsa, kopyalanan gövde istemciler arasında eşitleme için kaydedilir ve bu gövdeye Mesh Physics
devredilir. Not: Kopyalanan katı gövde, orijinal sert gövde sahnesinin başından itibaren konum, dönüş ve hızlara sahip olacaktır. Bunlar farklı olması gerekiyorsa, Mesh Bulut Betiği'nde açıkça ayarlanmalıdır.