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:
- Unity'yi başlatın, Projeler sekmesinde Aç'ı seçin.
- Kopyalanan depodaki Unity\Tutorials\Introduction dizinine göz atın.
- 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 düzenleyicisi sürüm 5.5 veya üzeri.
- Unity için Visual Studio Araçları ile Visual Studio 2015 veya üzeri.
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
Unity düzenleyicisini başlatın ve istediğiniz konumda yeni bir proje oluşturun:
Projeye Giriş adını verin ve yerleştirmek istediğiniz konumu seçin:
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:
Diskinizde paket konumuna (kopyalanan depodaki Unity dizini) göz atın ve açın:
Tüm paket içeriğini içeri aktarmayı seçin:
Sahnenizi kaydetmek için uygun bir zamandır- Ctrl+S tuşlarına basın ve sahnenize bir ad verin:
İ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).
Unity düzenleyicisinin Proje penceresinde Prefabs dizinine ( MicrosoftGesturesToolkit altında) göz atın:
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:
Ş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:
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:
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:
Microsoft Hareketleri Hizmeti penceresinde algılamayı etkinleştir onay kutusunun işaretli olduğundan emin olun:
Ö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.
Boş Oluştur için GameObject menüsünü kullanın, yeni nesneyi PrimitiveFactory olarak yeniden adlandırın:
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.
Scripts klasöründe PrimitiveFactory adlı yeni bir betik oluşturun (betik adına .cs uzantısını eklemeniz gerekmez):
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:
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.
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:
İ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.
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:
Hiyerarşi penceresinde GestureTrigger oyun nesnesini seçin ve Denetçi penceresine dönün:
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:
1 Hareketinizi 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. 2 Hareket algılandığında yürütülecek yöntemi belirtin. 3 State-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.
GestureTrigger'ınHiyerarşi penceresinde seçili nesne olmaya devam edin ve Denetçi penceresindeki Hisse Senedi Hareketi açılan listesinden Dokunma hareketini seçin:
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:
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:
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:
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.
İ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.
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.
Sahneyi oynatın. Sol fare düğmesine tıklayarak birkaç temel öğe oluşturun. Sağ düğmeye tıklayarak tüm ilkelleri yok edin.
Ş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.
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 yeniden etkinleştirmek için her zaman aynı adımları izleyebilirsiniz.
Ş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):
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.
Proje penceresinde, MicrosoftGesturesToolkit\Prefabs dizininin altındaki CameraGesturesController prefab'ını bulun. Sürükleyip sahnenize bırakın:
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):
Elinizi yumruğa basmak (InitSpreadPose → GrabPose 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 (GrabPose → FinalSpreadPose geçişi) kameranın elinizi izlemeyi durdurmasına neden olur.
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:
- 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.
- 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 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.