Aracılığıyla paylaş


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.ConnectedEventIderiş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.

Sahte Kullanıcı Özellikleri

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:

Basit Giriş örneği

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");

WebSlate örneği

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.Rotationve 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.

Sonraki adımlar