Aracılığıyla paylaş


Donatılabilir Wand nasıl çalışır?

Wand'a Genel Bakış

Önemli

Equippables'ı kullanmaya yeniyseniz, bu makaleyi okumadan önce Nesneleri Donatılabilir öğelerle gerçekçi bir şekilde tutma başlıklı makaleyi okumanızı öneririz.

Wand, GitHub'dan Mesh örneklerimizi indirdiğinizde aldığınız Toybox paketinde bulunan Donatılabilir öğelerden biridir. Asayı elinize aldığınızda, neredeyse göğüs hizanızda önünüzde tutarsınız ve Wand ucunda parıltılı bir buhar parçacık etkisi gösterir.

Wand'ın etkinleştirilmemiş durumda olduğu bir etkinlik katılımcısını gösteren GIF.

Wand'ı etkinleştirmek için sol fare düğmesine (PC) veya denetleyici tetikleyici düğmesine (Görev) tıklayın. Kolun öne doğru itilir ve Asanın ucu başka bir parçacık etkisiyle oluşturulan havai fişekleri yayar.

Bir etkinlik katılımcısının Wand'ı etkinleştirdiğini ve ardından havai fişekler oluşturduğunu gösteren GIF.

Wand'ın etkinleştirme türü tek olarak ayarlanır. Başka bir deyişle, davranışlarında ilerler çalıştırmaz Wand devre dışıdır ve kolunuz ilk konumuna döner. Davranışları yinelemek için yeniden tıklayın.

Wand betik grafı

Şimdi Wand'ın nasıl çalıştığına göz atalım ve buna bağlı olan betik grafiğini inceleyelim.

  1. Oyuncak Kutusu örneğini açın ve Oyuncak Kutusu sahnesinde olduğunuzdan emin olun.

  2. Hiyerarşi'de GameObject Wand_Prefab seçin.

    Wand prefabrik öğesinin vurgulandığı Hiyerarşi'nin ekran görüntüsü.

  3. Denetçide Betik Makinesi bileşenine gidin ve MagicWand adlı bir betik grafı varlığı içerdiğini unutmayın. Grafiği Düzenle düğmesine tıklayın.

    Grafı Düzenle düğmesinin vurgulandığı Wand Betik Makinesi bileşeninin ekran görüntüsü.

Wand'ın ne zaman alınıp alına olmadığını algılama

Wand'a ekli görsel betikte, sihirli parlama başlatmak için Analizimizi TutulduYsa Denetle adlı düğüm grubunda başlatıyoruz.

Wand'ın tam betik grafiğinin ikinci bölümü vurgulanmış şekilde ekran görüntüsü.

Wand'ın alınıp alınmadığını belirleyen düğüm Mesh Etkileşime Açılabilir Gövde: Benimdir. Bu bir Boole değeridir ve False değeriyle başlar.

isMine düğümünün ekran görüntüsü.

Bir avatar Wand'ı aldığında, durumu değişir. isMine değeri "true" olarak değişir ve bu değer bir if düğümüne geçirilir. Bu, bir "pick-up sound" öğesinin tetiklemesine neden olur...

Durum durumunun ekran görüntüsü değiştiyse ve mesh ses düğümlerini oynattı.

... ve ayrıca StartGlowVFX nesne değişkeninin değerini "true" olarak değiştirir.

Değer başlangıç akışı vfx ile ayarlanan nesne değeri düğümünün ekran görüntüsü.

isMine ve Durum Değişti düğümlerinin üzerindeki metinde "Bu istemci için yerel" ifadesinin bulunduğunu unutmayın.

öğesinin ekran görüntüsü benimdir ve sahnede değiştirilen düğümler yerelden bu istemci metnine vurgulanır.

Bu düğümler ve tetiklenen ses yerel olarak gerçekleşir. Ancak etkinlikteki diğer katılımcıların Wand ile neler olduğunu deneyimlemesini istiyoruz. Bu, "Tüm istemciler tarafından paylaşılan" metnini görüntüleyen Nesne Değişkenini Ayarla düğümü eklenerek elde edilir.

Tüm istemciler tarafından paylaşılan metin vurgulanmış olarak küme nesnesi değişken düğümünün ekran görüntüsü.

İpucu: isMine değişkeni Mesh Interactable Body betiğinde bulunur.

'nin ekran görüntüsü Mesh Interactable Body betiğinde benim boole'mdur.

Etkinleştirilmemiş durum parçacık etkisini açma

Akışı Networking startMagic adlı düğüm grubundan alırız. Bu düğüm grubunun amacı, Wand'ın ucunda görünen ilk parçacık etkisini açmak ve kapatmaktır. Bu etkiyi "parıltılı buhar" olarak adlandıracağız.

Wand'ın tam betik grafiğinde beşinci bölümün vurgulandığı ekran görüntüsü.

Durum değişikliği, startFLowVFX'in "true" değerinin bir if düğümüne geçirilmesine neden olur..

Get nesne değişkeninin ekran görüntüsü, sahnede değiştirildi ve düğümler.

... ve bu, PersistentVFX nesne değişkeninin değerinin de doğru olmasını sağlar ve bu da vfx_wand-ethereal_persistent_02 parçacık sistemi ("sparkly vapor") etkisini tetikler.

Parçacık efektinin true olarak ayarlanmasını tetikleyen boole değeriyle ayarlanmış etkin düğümün ekran görüntüsü.

Wand'ın etkinleştirilmemiş durumda olduğu bir etkinlik katılımcısını gösteren GIF.

Wand'ı etkinleştirme

Katılımcının sol fare düğmesine (BILGISAYAR) veya denetleyici tetikleyici düğmesine (Görev) tıklaıldığını varsayalım. Buna "Donatılabilir'i etkinleştirme" denir. Avatarın kol konumunun değişmesine neden olur ve Ağ İletişimi adlı düğüm grubunda . ..

Wand'ın tam betik grafiğinin ekran görüntüsü ve dördüncü bölüm vurgulanmış.

... Tıklama, Mesh Etkileşime Girilebilir Gövde: Etkin düğümü tarafından algılanır. Bu düğüm, varsayılan değeri false olan bir Boole değeridir. Tıklama "true" olarak etkinleştirilir; Durum Değişti düğümü " true" değerini If düğümüne geçirir. Bu, Değişken Ayarla düğümünün isPressed Boolean değerini öncekinin tersine ayarlamasına neden olur (dolayısıyla artık "true" olur).

öğesinin ekran görüntüsü etkin düğümdür ve buna neden olan diğer düğümler true olarak basılır.

İpucu: isActivated değişkeni Mesh Interactable Body betiğinde bulunur.

Mesh Interactable Body betiğinde değişkeninin ekran görüntüsü etkinleştirilir.

Etkinleştirilmiş durum parçacık etkisini açma

Tıklamayla Yazım ataması adlı düğüm grubundan akışı alırız.

Wand'ın tam betik grafiğinin ekran görüntüsü ve üçüncü bölüm vurgulanmış.

Bu düğüm grubu, katılımcı düğmeye tıkladığında ve Wand'ı etkinleştirdiğinde oluşan Wand'ın sonundaki havai fişek parçacık efektini tetikler. Wand etkinleştirilmemiş durumuna döndükten sonra, bu düğüm grubu ilk parçacık etkisini ("sparkly vapor") yeniden açar.

Grafikte isPressed* öğesinin "true" değeri bir if düğümünün Değişken Ayarla: Nesne düğümünü tetiklesine neden olur. Bu düğüm startGlowVFX değişkenini "false" olarak ayarlar.

Başlangıç parlaması vfx boolean değerinin ekran görüntüsü false olarak değiştirildi

Bu, Ağ başlatmaGic düğüm grubundaki düğümleri yeniden tetikler. Bu kez startGlowVFX'in "false" değeri PersistentVFX parçacık etkisinin kapanmasına neden olur.

İlk parçacık etkisini kapatan dayanıklı vfx boolen'in ekran görüntüsü false olarak değiştirildi.

Tıklama düğümü grubundaki Yazım Ataması'na geri dönün. Kısa bir bekleme süresinden sonra bir ses çalınıyor ve wand'ın ucunda farklı bir parçacık efekti tetikleniyor: vfx_wand_blast_trail_spheres_01 ("havai fişekler"), ShootTrailVFX nesne değişkeninin değeridir.

Etkinleştirilmiş durum sesini ve parçacık efektini tetikleyen düğümlerin ekran görüntüsü.

Bir etkinlik katılımcısının Wand'ı etkinleştirdiğini ve ardından havai fişekler oluşturduğunu gösteren GIF.

Aktif olmayan parçacık efektini yeniden açın

Bir diğer kısa bekleme süresinden sonra startGlowVFX Boole değeri yeniden "true" olarak değiştirilir ve bu da vfx_wand_ethereal_persistent_02 parçacık sistemi ("sparkly vapor") etkisini Networking startMagic grubunda yeniden açar.

Pırıltılı buhar parçacık etkisini tekrar üzerine getiren düğümlerin ekran görüntüsü.

Bu noktada avatarın kolu Asa etkinleştirilmeden önceki konumuna döner ve parıltılı buhar tekrar görülebilir.

Wand'ın etkinleştirilmemiş durumda olduğu bir etkinlik katılımcısını gösteren GIF.

Değnek'i serbest bırakma

Wand'ın etkinleştirme türü "iki durumlu" ise, katılımcı yeniden tıkladığında ikinci, farklı bir "durum" veya davranış kümesi tetikler. Ancak, Wand'ın etkinleştirme türü "tek" olur ve bu, katılımcı her tıklayışında aynı "durum" veya davranış kümesinin tekrarlandığı anlamına gelir.

Wand'ı serbest bırakmak için katılımcı Boşluk tuşuna basar; Bu, Wand'ın yere düşmesine neden olur. Değnek tutulmadığında, asanın ucunda parıltılı buhar parçacık etkisinin çalışmasını istemeyiz. Meşgul değilse, Wand düğüm grubunu kapat grubundaki düğümler bu parçacık etkisini kapatır.

Wand'ın ilk bölümü vurgulanmış tam betik grafiğinin ekran görüntüsü.

Wand tutulurken Mesh Etkileşime Geçebilen Gövde: Get Equipped At* değerinin değeri "DefaultHand" olur. Equip Location düğümünün (Boole) değeri "None" şeklindedir. Bu iki değer Eşit düğümde karşılaştırılır (aynı zamanda Boole değeridir); aynı olmadığından Eşit'in çıkışı "false" olur ve if düğümü tetiklenmez.

Wand hala tutulurken düğümde Varsayılan El değeriyle donatılmış olsun ekran görüntüsü.

Wand bırakıldığında, Get Equipped At değeri "None" olarak değişir. Bu, Equal ve If düğümlerinin "true" çıkışını vermesine neden olur. Bu, startGlowVFX nesne değişkeninin değerini "false" olarak dönüştüren Set Variable: Object düğümünü tetikler.

Wand bırakıldıktan sonra düğümde sıfır değeriyle donatılmış get ekran görüntüsü.

Bu işlem bir kez daha Networking startMagic düğüm grubundaki düğümleri tetikler ve PersistantVFX nesne değişkeninin değeri olan "sparkly vapor" parçacık etkisini (vfx_wand_ethereal_persistent_02) kapatır.

Dayanıklı vfx boolen'in ekran görüntüsü false olarak değiştirildi ve bu da sparkly buhar parçacık etkisini kapatıyor.

Betikle denemeler için öneriler

  • Mevcut Donatılabilir öğelerden biri alındığında ve tutulduğunda tetiklenebilen farklı efektler oluşturun.
  • Mevcut efektlerin bazılarını kullanabilecek yeni Donatılabilir öğeler oluşturun. Örneğin, bazı havai fişek türleri şu anda Wand tarafından kullanılan "parıltı" efektlerini kullanabilir.
  • Yeni Bir Donatılabilir için, Donatılabilir tutulduğunda ve sol fare düğmesine (PC) veya denetleyici düğmesine (Görev) basıldığında tetiklenebilen farklı efektler ve davranışlar oluşturun. Örneğin, asa yerine, düğmeye bastığınızda bir yem atan bir oltanız olabilir.
  • Bir nesnenin teslim alındığında doğrudan etkinleştirilmiş durumuna taşınması (örneğin, Detaylandırma) ile etkin olmayan bir nesnenin başlatılması ve katılımcı tıklatıldıktan sonra etkinleştirilmiş durumuna geçmesi (örneğin, Tablet) arasındaki farkı düşünün. Her iki yaklaşımdan da yararlanan nesneler yapın.

Sonraki adımlar