Unity'de® Hareketlere Giriş

Bu öğreticide, unity uygulamasına hareketler eklemek için Unity için Prag Projesi araç setinin nasıl kullanılacağı öğretilecektir. Kullanıcı belirli hareketleri her yürüttüğünde 3B temelleri oluşturan ve yok eden basit bir Unity projesi oluşturacağız. Ardından, ana sahne kamerasını hareketlerle taşımak için Unity araç setimizin CameraGesturesController prefab'ını nasıl kullanacağınızı göstereceğiz.

Bu öğreticide, C# programlama dili hakkında temel bilgi sahibi olduğunuz varsayılır. Unity ortamı hakkında bilgi sahibi olduğunuzu varsaymayacağız.

Bu öğreticinin tamamlanması yaklaşık 30 dakika sürer.

Nihai Sonucu İndirme

Bu öğreticide elde edilen unity projesinin son hali GitHub'daki açık kaynak örnekleri depomuzda bulunabilir. Depoyu kopyaladıktan sonra uygulamayı çalıştırmak için şu adımları izleyin:

  1. Unity'yi başlatın, Projeler sekmesinde Aç'ı seçin.
  2. Kopyalanan depodaki Unity\Tutorials\Introduction dizinine göz atın.
  3. Sahneyi çalıştırmak için oynat düğmesine (veya Ctrl+P) basın.

Önkoşullar

Desteklenen derinlik kameralarımızdan birine sahip olduğunuzdan ve bilgisayarınızın Project Prag gereksinimlerini karşıladığından emin olun. Tüm donanımınızı hazırladıktan sonra, makinenizde Project Prag'ı ayarlayın .

Bu öğretici için aşağıdaki yazılım araçlarına da ihtiyacınız olacak

Unity için Visual Studio Araçları yüklemeyle ilgili yardım için SSS sayfamıza bakın.

1. Adım - Yeni Unity Projesi Oluşturma ve Yapılandırma

  1. Unity düzenleyicisini başlatın ve istediğiniz konumda yeni bir proje oluşturun:

    Yeni Unity projesi oluşturma

    Projeye Giriş adını verin ve yerleştirmek istediğiniz konumu seçin:

    Yeni Projeyi adlandırın

  2. GitHub örnekleri depomuzu kopyalayın ve Unity araç setimizi projenize aktarın. Varlıklar menüsünde Paketi ve Özel Paketi İçeri Aktar... öğesini seçin:

    Project Prag araç setini içeri aktarma

    Diskinizde paket konumuna (kopyalanan depodaki Unity dizini) göz atın ve açın:

    Project Prag Unity paketini bulma

    Tüm paket içeriğini içeri aktarmayı seçin:

    Tam paket içeriğini içeri aktarma

  3. Sahnenizi kaydetmek için uygun bir zamandır- Ctrl+S tuşlarına basın ve sahnenize bir ad verin:

    Sahneyi kaydet

İpucu

Çalışmanızı kaybetmemek için zaman zaman sahneyi kaydetmek iyi bir uygulamadır. Her öğretici adımının sonundaki sahneyi ( Ctrl+S kullanarak) kaydetmenizi öneririz.

2. Adım - Hareketler Hizmetine Bağlanma

Şimdi Unity uygulamamız ile Gestures Hizmeti arasında bir bağlantı kuracağız. Derinlik kameranızın bilgisayara bağlı olduğundan ve Hareket Hizmeti'nin çalıştığından emin olun (Project Prag yüklemesi sırasında masaüstünüzde oluşturulan Microsoft.Gestures.Service kısayolunu kullanarak başlatın).

  1. Unity düzenleyicisinin Proje penceresinde Prefabs dizinine ( MicrosoftGesturesToolkit altında) göz atın:

    Project Prag prefabs

    Hareketler Hizmeti ile iletişim kurmak için GesturesManager önfabriksini kullanacağız. Prag Projesi ile çalışan her Unity sahnesi GesturesManager'ın tam olarak bir örneğini içermelidir.

    UiManager prefabrikasyonunu, Hareketler Hizmeti bağlantısının durumu hakkında yararlı bilgiler görüntülemek için de kullanacağız.

    İlgili ön ekleri sürükleyip sahnenize bırakın:

    Sahneye prefabs ekleme

  2. Şimdi yürüt düğmesine basarak veya Ctrl+P klavye kısayolunu kullanarak sahneyi oynatın. Sağ alt köşedeki simgenin Algılama durumunda olduğundan emin olun:

    Hizmete bağlantı

    Bu, uygulamamızın Hareketler Hizmeti ile bağlantı kurduğunu ve hareket algılamanın etkin olduğunu gösterir.

    Bunun yerine, bildirilen durum Bağlantısı Kesildi ise:

    Unity bağlantısı kesildi simgesi

    Hareketler Hizmetinizi başlatın ( Microsoft.Gestures.Service masaüstü kısayolunu kullanın). Durum, başlatıldıktan sonra birkaç saniye içinde Algıla olarak değiştirilmelidir.

    Bildirilen durum Bağlandı ise:

    Unity bağlı simgesi

    Microsoft Hareketleri Hizmeti penceresinde algılamayı etkinleştir onay kutusunun işaretli olduğundan emin olun:

    Hareketler Hizmeti - algılamayı etkinleştirme

Önemli

Sonraki adıma geçmeden önce yürütme modundan çıkmayı unutmayın ( oynat düğmesine veya Ctrl+P tuşlarına yeniden basarak). Oynatılırken sahnede yaptığınız tüm değişiklikler, oynatma modundan çıktıktan sonra atılır.

3. Adım - Sahnede 3B Temel Öğeler Oluşturmak için Betik Oluşturma

Unity oyununda hareketlerin nasıl kullanılabileceğini göstermek için yeni bir oyun nesnesi ekleyerek ve bunu bir C#-script ile ilişkilendirerek başlayacağız. Betiği, her sol fare düğmesi tıklamasında sahnede yeni bir 3B temel öğe oluşturacak şekilde programlayacağız. Bir sonraki adımda bir hareket belirleyecek ve betiğimizde ilkel oluşturan kodu tetikleyecek şekilde yapılandıracağız.

  1. Boş Oluştur için GameObject menüsünü kullanın, yeni nesneyi PrimitiveFactory olarak yeniden adlandırın:

    Yeni oyun nesnesi oluşturma

    Proje penceresinde, Varlıklar altında yeni bir klasör oluşturun ve bu klasörü Betikler olarak adlandırın. Bu klasör, hareket algılaması sırasında yürütülecek kodu içerir.

    Betikler klasörü oluşturma

    Scripts klasöründe PrimitiveFactory adlı yeni bir betik oluşturun (betik adına .cs uzantısını eklemeniz gerekmez):

    Yeni betik oluşturma

  2. PrimitiveFactory betiğini PrimitiveFactory oyun nesnesiyle ilişkilendirmek için, betiği sürükleyip oyun nesnesinin Denetçi penceresindeki Bileşen Ekle düğmesinin altındaki boş alana bırakın:

    Betiği ilişkilendir

    Proje penceresinde PrimitiveFactory simgesine çift tıklayarak betiği Visual Studio'da düzenleyin. Açıldıktan sonra PrimitiveFactory.cs dosyasının içeriğini aşağıdaki kodla değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

  3. Sahneyi oynatın ve sahne çerçevesi içinde herhangi bir yere sol tıklamak için fare işaretçinizi kullanın. Her tıklama rastgele oluşturulan yeni bir 3B temel öğe oluşturur:

    Oluşturulan ptimitives

İpucu

Unity düzenleyicisinin Konsol penceresine göz atın. Burada, sahnemizdeki çeşitli varlıklar ve Unity platformunun kendisi tarafından oluşturulan çeşitli iletiler, uyarılar ve hatalar bulacaksınız.

4. Adım - Sahnede Yeni 3B Temel Öğeler Oluşturmak için Hareket Kullanma

Bu adımda, 3B ilkel nesli tetikleme hareketi kullanabilmeniz için gerekli kablolamaları oluşturacağız.

  1. Unity araç setimizle birlikte sağlanan GestureTrigger prefab, projenizde herhangi bir hareket algılandığında yürütülecek bir yöntem atamanıza olanak tanır.

    GestureTrigger ön ekini Proje penceresinden Hiyerarşi penceresindeki sahnenize sürükleyip bırakın:

    GestureTrigger prefab ekleme

  2. Hiyerarşi penceresinde GestureTrigger oyun nesnesini seçin ve Denetçi penceresine dönün:

    GestureTrigger denetçisi

    Yukarıda 1 ile 4 arasında numaralandırılmış kullanıcı arabiriminin (kullanıcı arabirimi) bölümleri, bir hareketi ve etkisini yapılandırmanıza olanak tanır:


    1Hareketinizi hangi şekilde belirtmek istediğinizi seçin; önceden tanımlanmış "hisse senedi" hareketleri listesinden bir hareket seçin veya XAML dilinde özel bir hareket belirtin.
    2Hareket algılandığında yürütülecek yöntemi belirtin.
    3State-machine hareketinde belirli bir durum algılandığında hangi yöntemin yürütüleceğini belirtin.

    Prag Projesi'nde bir hareketin kavramı ve yapısı hakkında daha fazla bilgi edinmek için genel bakış sayfamızı ziyaret edin.

    Bu öğreticide 1. ve 2. bölümlere odaklanacağız. Yani PrimitiveFactory oyun nesnesinin CreateRandomPrimitive() yöntemini tetikleyecek önceden tanımlanmış "Dokun" stok hareketini bağlayacağız. Hareketleri belirtmek için XAML kullanma ve GestureTrigger kullanıcı arabiriminin 3. bölümü 3B Nesne Düzenleme öğreticisinde ele alınacaktır.

  3. GestureTrigger'ınHiyerarşi penceresinde seçili nesne olmaya devam edin ve Denetçi penceresindeki Hisse Senedi Hareketi açılan listesinden Dokunma hareketini seçin:

    Dokun'un hisse senedi hareketi olarak ayarlanması

  4. PrimitiveFactory yöntemlerini GestureTrigger için kullanılabilir hale getirmek için, Tetikleyicide () bölmesindeki oturum açma işaretine tıklayın+, ardından PrimitiveFactory oyun nesnesini Hiyerarşi penceresinden Denetçi'dekiHiçbiri (nesne) kutusuna sürükleyip bırakın:

    Nesnelere PrimitiveFactory ekleme

    Son olarak, CreateRandomPrimitive() öğesini Dokunma hareketinin işleyici yöntemi olarak tanımlamak için GestureTrigger'ınDenetçi penceresinde İşlev Yok açılan menüsüne tıklayın, PrimitiveFactory ve CreateRandomPrimitive () öğesini seçin:

    Hook CreateRandomPrimitive() olay işleyicisi

  5. Sahneyi şimdi oynatın. Yine de sol fare düğmesini kullanarak yeni bir 3B temel öğe oluşturabiliyor olmanız gerekir. Buna ek olarak, bunu artık Dokunma hareketiyle (iki elle de gerçekleştirin) yapabilmeniz gerekir:

    Dokunma Hareketi Animasyonu

    Sahnede yeni temel öğeler oluşturmak için Dokunma hareketini başarıyla kullanamıyorsanız lütfen sorun giderme bölümüne bakın.

5. Adım - Sahnedeki tüm 3B TemelLeri Yok Etmek için Hareket Kullanma

Bu adımda, daha önce oluşturulan tüm 3B ilkelleri sahneden temizlemek için bir hareket ekleyeceğiz.

  1. İlk olarak PrimitiveFactory betiğimize DestroyAllPrimitives() adlı bir yöntem ekleyin (PrimitiveFactory.cs hala Visual Studio'da açık olmalıdır):

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

  2. Yeni yöntemi bir harekete aktarmadan önce sağ fare düğmesini kullanarak test edeceğiz. PrimitiveFactory betiğindeki mevcut Update() yöntemini aşağıdaki kodla değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

  3. Sahneyi oynatın. Sol fare düğmesine tıklayarak birkaç temel öğe oluşturun. Sağ düğmeye tıklayarak tüm ilkelleri yok edin.

  4. Şimdi 4. adımda yaptığımız gibi DestroyAllPrimitives() yöntemini çağırmak için Parmak Uydurma hareketini bağlayacağız:

    • Sahneye başka bir GestureTrigger oyun nesnesi ekleyin.
    • Yeni GestureTrigger oyun nesnesinin Denetçi görünümünde, Hisse Senedi Hareketi açılan listesinden Parmak Uydurma hareketini seçin.
    • Tetikleyicide () bölmesinde, sign tuşuna basarak + yeni bir öğe oluşturun. PrimitiveFactory oyun nesnesini Yok (Nesne) kutusuna sürükleyip bırakarak yeni Tetikleyicide () öğesiyle ilişkilendirin.
    • Son olarak İşlev Yok açılan listesine tıklayın ve PrimitiveFactory nesnesinin DestroyAllPrimitives() öğesini seçin.
  5. Keşif İstemcisi tanıtım uygulamamız başlangıç menüsünü açmak için ParmakLa Yasla hareketini kullanır. Bu hareketi Unity uygulamamızda da kullandığımızı unutmayın. Parmak Uydurma'nın Unity dışında herhangi bir yan efekte sahip olmasını istemediğimiz için Bulma İstemcisi'ni devre dışı bırakmanız veya kapatmanız gerekir. Devre dışı bırakmak için Prag Projesi tepsi simgesine tıklayın ve Devre dışı bırak'ı seçin:

    Bulma İstemcisi'ni devre dışı bırakma

    Bulma İstemcisi'ni yeniden etkinleştirmek için her zaman aynı adımları izleyebilirsiniz.

  6. Şimdi sahneyi çalıştır. Dokunma hareketini kullanarak birkaç temel öğe oluşturun ve ParmakLa Yasla hareketini kullanarak bunları yok edin (iki elle de yapın):

    Tutturma hareketi durum makinesi

6. Adım - Kamerayı Kontrol Etmek için Hareket Kullanma

Bu adımda, hareketlerle sahnedeki ana kameranın konumunu kontrol etmek için Bir Project Prag araç seti prefabrik kullanacağız.

  1. Proje penceresinde, MicrosoftGesturesToolkit\Prefabs dizininin altındaki CameraGesturesController prefab'ını bulun. Sürükleyip sahnenize bırakın:

  2. Sahneyi oynatın. Şimdi, nesneleri oluşturmanın ve yok etmenin yanı sıra, aşağıdaki hareketi kullanarak kamerayı denetleyebilirsiniz (iki elle de gerçekleştirin):

    GrabReleaseGesture

    Elinizi yumruğa basmak (InitSpreadPoseGrabPose geçişi), kameranın ele "tutturulmasına" neden olur- yumruğunu uzayda hareket ettirerek kamerayı tokmak ve dolly yapmak için izin verir.

    Parmaklarınızı ayırarak klişeyi serbest bırakmak (GrabPoseFinalSpreadPose geçişi) kameranın elinizi izlemeyi durdurmasına neden olur.

  3. Merak ediyorsanız, Inspectorpenceresindeki CameraGesturesController oyun nesnesini inceleyin. Bir Hareket Tetikleyicisi bileşenine sahip olduğunu unutmayın. GrabReleaseGesture içindeki farklı durumları CameraManipulation betiğindeki (MicrosoftGesturesToolkit\Scripts dizininde bulunan) çeşitli yöntemlere aktarmak için bu bileşeni kullandık.

    XAML ile özel hareketler belirtme ve durumlarını oyun nesnesindeki yöntemlere bağlama hakkında daha fazla bilgi edinmek için 3B Nesne Düzenleme öğreticisinin 3. adımına bakın.

Sorun giderme

4. Adımın sonuna ulaştıysanız ve Dokunma hareketi sizin için çalışmıyorsa unity sahnesini oynatın, Microsoft Gestures Service penceresini açın ve aşağıdakileri doğrulayın:

Microsoft Hareketleri Penceresi

  1. Elinizi derinlik kamerasına yaklaştırdığınızda, Microsoft Gestures Service penceresinin resim bölümünde, parmak ve avuç içinin tahmini konumlarını gösteren renkli oklarla görebilirsiniz. Böyle bir görüntü görmüyorsanız, büyük olasılıkla kamera sorunları yaşıyorsunuzdur. Lütfen kamera sorun giderme sayfamıza bakın.
  2. Unityİstemciler listesinde, Unity_TapGestureise Unity istemcisiyle ilişkili hareketlerin alt listesinde görünür. Böyle bir durum söz konusu değilse lütfen
    • Unity'deki Oyun pencerenizin sağ alt köşesindeki simge Algılama durumunu görüntüler (bkz . 2. adım).
    • GestureTrigger kullanıcı arabiriminde doğru dokunma hareketini seçtiniz (bkz. 4. adım).
  3. Unity penceresi ön planda olduğunda ve Dokunma hareketini yürüttüğünizde, Unity_TapGesture ile ilişkili Zaman Çizgisi ilerlemelidir. Böyle bir durum söz konusu değilse, büyük olasılıkla hareketi doğru şekilde yürütmemişsinizdir. Dokunma hareketini yalnızca başparmak ve işaret parmaklarınızla gerçekleştirdiğinizden emin olun.

Sahnede yeni 3B temel öğeler oluşturmak için Dokunma hareketini hala kullanamıyorsanız, lütfen bu sayfaya bir yorum bırakın ve yardım sağlamak için elimizden geleni yapacağız.