El Coach

El Coach menüsü

Hand Coach, sistem kullanıcının uygulamalı olduğunu algılamadığında tetiklenen 3B modellenmiş bir eldir. Bu, hareket taöğretme olmadığında kullanıcıya kılavuzluk eden bir "eğitim" bileşeni olarak uygulanır. Kullanıcılar bir süre için belirtilen hareketi yapmadığında, eller bir gecikmeyle döngü yapılır. Hand Coach, bir düğmeye basmayı veya bir hologram çekmeyi göstermek için kullanılabilir.

Geçerli etkileşim modeli, kaydırma, en son seçim ve yakın dokunma gibi çok çeşitli hareket denetimlerini temsil eder. Aşağıda, var olan Hand Coach örneklerinin tam bir listesi verilmiştir:

  • Yakın dokunma: düğmeler için kullanılır veya ınteractable nesneleri kapatma
  • Far Select: en uzakta olan nesneler için kullanılır
  • Taşı: bir hologram alana taşımak için kullanılır
  • Döndür: hologram veya nesnelerin nasıl döndürüleceğini göstermek için kullanılır
  • Scale: hologram daha büyük veya daha küçük olacak şekilde işlemeyi göstermek için kullanılır
  • El ile çevirme: bir UI başlangıç paneli veya el menülerini getirmek için kullanılır
  • Palm up: hazır deneyimden daha fazla bilgi edinmek için kullanılır. Başka bir öneri de bir UI başlangıç panelini getirmek olabilir
  • Kaydır: bir listeyi veya uzun belgeyi kaydırmak için kullanılır

Örnek sahne

Örnekleri HandCoachExample sahnede bulabilirsiniz: Mixedrealitytoolkit. examples/deneysel/HandCoach/sahneler

3B varlıklar

Varlıkları şu şekilde bulabilirsiniz: Mixedrealitytoolkit. SDK/deneysel/HandCoach

Kalite

Skint ağ üzerinde deformasyonlar fark ederseniz, projenizin uygun miktarda neşeli olduğundan emin olmanız gerekir. Unity 'nin düzenleme > Project Ayarlar >> diğer > Blend ağırlıklarını ' na gidin. Düzgün bir şekilde bakmak için "4 kemikleri" seçildiğinden emin olun. Project ayarı

Betikler

Etkileşim İpucu

InteractionHint.csBetik, animasyonları tetiklemek ve el ile belirme için sarmalayıcı işlevselliği sağlar.

Etkileşim ipucu ayarlama

Bir etkileşim ipucu ayarlamak için, sunulan Prefabs "StaticHandCoachRoot_L. prefab" ve "StaticHandCoachRoot_R. prefab" kullanılması önerilir. Bu prefab, sunulan ipucu animasyonlarının istendiği gibi çalıştığından emin olmak için ınteractionipucu betiğini ve el takımı 'yi ve uygun hiyerarşiyi içerir. Aksi takdirde, komut dosyasını Animator ile birlikte, tek bir üst düzeydeki bir oyun nesnesine yerleştirmeniz gerekir.

Inspector özellikleri

  • Hideifhandizleniyor Bu Boole, bir kullanıcının elleri izlenirken görselleri gizlemek için el izleme durumunun kullanılıp kullanılmayacağını belirtir. Bu yanlış olarak ayarlanırsa, ipucunu gizlemeyi öğrenmek için yalnızca "Customshouldhidevısuals" betik özelliği kullanılacaktır.

  • Mindelay Bu özellik görselleri göstermek için gereken en düşük gecikmeyi belirtir. Varsayılan olarak, kullanıcının elleri izlenmediyse, el için görseller bu kadar saniye sonra görüntülenir.

  • Maxdelay Bu özellik görselleri göstermek için maksimum gecikme sayısını belirtir. Varsayılan olarak, el ile yapılan görseller, kullanıcının elleri izlense bile bu kadar saniye sonra görüntülenir.

  • Usemaxtimer Bu Boole değeri false olarak ayarlandıysa, en büyük süreölçeri devre dışı bırakır ve yalnızca kullanıcının elleri görünümden olmadığında veya özel koşul false değerini döndürürse el ipucunun görüntülenmesini sağlar.

  • Yinelenir Bu özellik, en düşük veya en fazla süreölçer geçtiğinde ipucu animasyonunun kaç kez oynatılacağını denetler. İpucu daha sonra, gecikmeyi gizler ve yeniden bekler.

  • AutoActivate Bu Boole değeri true olarak ayarlandığında, betiğin GameObject değeri hiyerarşide etkin olduğunda ve betik etkinleştirildiğinde ipucu otomatik olarak Zamanlayıcı mantığı üzerinden çalışır. Bu yalnızca ipucu görünümünü el ile denetlemeyi ve kod aracılığıyla ayarlamayı düşünüyorsanız, false olarak ayarlanmalıdır.

  • Animasyon durumu İpucu etkin olduğunda yürütülmesi gereken animasyon durumunun adı. Bu, StartHintLoop () işlevi çağrılmadan önce ayarlanmalıdır (AutoActivate işaretlenmişse OnEnable sırasında).

Komut dosyası aracılığıyla ınteractionipucu denetleniyor

  • Starthintloop Bu işlev, AutoActivate bayrağı true olarak ayarlandıysa, başka bir şekilde OnEnable ' i Başlatan göster/gizle döngüsünü başlatır.
  • Stophintloop Bu işlev, şu anda oynatılması durumunda soluklaştırma animasyon durumunu çağırır, ardından göster/gizle döngüsünü devre dışı bırakır ve hiyerarşide etkin olmayan şekilde ayarlar.
  • Animasyon durumu Bu dize, döngü sırasında hangi animasyon durumunun çalındığını belirler. Bu dizeyi, hangi durumun çalındığını değiştirmek için değiştirebilirsiniz, ancak StopHintLoop çağrıldıktan sonra bunu yapmanız gerekir ve durumu değiştirdikten sonra StartHintLoop öğesini yeniden çağırmanız gerekir.
  • Customshouldhidevısuals Bunu kendi işlevinizle ayarlayabilirsiniz, bu, el görsellerini gizlemek istediğinizde doğru döndürmelidir (özellikle de en büyük parametresi MinMaxTimer)

Özel Animasyon konuları

Belirme, varsayılan olarak 0,5 saniyeye ayarlanır. bu nedenle, takımı ile kullanım için oluşturulan tüm özel animasyonların, anlamlı bilgilerin oluşturulması için en az 1,5 saniye olması gerekir

Belirtilen varsayılan belirme ve soluklaştırma durumları, Fade_In ve Fade_Out, ikinci ana karenin zaman damgası değiştirilerek silinme uzunluğunu ayarlayarak ayarlanabilir.

Animator ve betiği, kurulumu mümkün olduğunca basit hale getirmek için bir şekilde ayarlanmıştır. Yeni animasyon durumları eklemek için, FBX 'nizi içeri aktarın, animasyon adının ayrı bir adla ayarlandığından emin olun ve bu animasyonu Animator 'a sürükleyin.

MoveToTarget

MoveToTarget. cs betiği, el ipucunu bir izleme konumundan, zaman içinde hedef konuma taşımak için işlevsellik sağlar.

MoveToTarget 'ı ayarlama

"MovingHandCoachRoot_L. prefab" ve "MovingHandCoachRoot_R. prefab" sunulan Prefabs, hiyerarşilerinde bir MoveToTarget içeriyor. Bu betiği kendi kurulumda kullanmak istiyorsanız, bunu, gg 'niz için Animator içeren kök oyunuya yerleştirmeniz gerekir.

Inspector özellikleri

  • Trackingobject Bunu, kendi hareketini başlamadan önce, takımı 'nin izlemesini istediğiniz nesneyle ayarlayın. Boş bir oyun nesnesi oluşturmanız ve izlemeyi bulmanıza yardımcı olması için belirli bir konuma taşımanız önerilir.
  • TargetObject Bunu, kendi hareketi sırasında takımı 'nin hareket ettirmek istediğiniz nesneyle ayarlayın. Boş bir oyun nesnesi oluşturmanız ve izlemeyi bulmanıza yardımcı olması için belirli bir konuma taşımanız önerilir.
  • RootObject Göreli konumların doğru hesaplanabilmesi için bunu izleme ve hedef nesne arasında paylaşılan bir üst öğeye ayarlayın. Dahil edilen prefab, hiyerarşisinde hem izleme hem de hedef nesnelerine sahiptir, ancak hedef nesneyi prefab dışında bir Oyunobject olarak ayarlayabilir ve kök nesneyi paylaşılan bir üst öğeye dönüştürebilirsiniz.
  • Süre Saniye cinsinden bir TrackingObject 'e TargetObject 'e geçmek için gereken süre (saniye cinsinden).
  • Targetoffset Doğru hedef konumuna ulaşmak için gameobject almak üzere bir ayarlanabilir boşluğu. Animasyonunuz animasyon sırasında konum boşluğu içeriyorsa bu faydalıdır.
  • Animasyon eğrisi Bu, varsayılan olarak doğrusal bir eğriye ayarlanır, ancak hareket yolunu başlatıp durdururken, kolaylaştırıcı/dışarı hareket hızını sağlamak için eğriyi değiştirebilirsiniz.

Komut dosyası aracılığıyla MoveToTarget denetleniyor

Özel betiğinizle, Izleme nesnesini takip etmek istediğiniz için bir () çağrısı yapın ve ardından hareket işlemini TargetObject 'e başlatmak istediğinizde MoveToTargetPosition () çağrısı yapın.

Animasyonlar aracılığıyla MoveToTarget denetleniyor

Taşınması gereken animasyonda, iki olay ayarlayın: biri bir takip () ve bir MoveToTargetPosition () çağrısıyla birlikte. Takip etme nesnenizin takip etmesine neden olduğundan, ilk ana karede takip edilmelidir. Takımı 'nin hedefe taşımaya başlamasını istediğiniz ana karede movetotargetposition ayarlanmalıdır. Komut dosyası işlevselliği, sunulan Prefabs içinde kullanılır.

RotateAroundPoint

RotateAroundPoint. cs betiği, el ipucunu zaman içinde bir Özet nokta etrafında döndürme işlevselliği sağlar.

RotateAroundPoint 'i ayarlama

"RotatingHandCoachRoot_L. prefab" ve "RotatingHandCoachRoot_R. prefab" sunulan Prefabs, hiyerarşilerine bir RotateAroundPoint içeriyor. Bu betiği kendi kurulumda kullanmak istiyorsanız, bunu, gg 'niz için Animator içeren kök oyunuya yerleştirmeniz gerekir.

Inspector özellikleri

  • Centeredparent Bunu, takımı 'nin Pivot olmasını istediğiniz üst nesneyle ayarlayın.
  • Ters çevir El yönünü aynı tutmak için bunu üst öğeyle birlikte, centeredParent 'e ters döndürün. Genel olarak bu, üzerinde ınteractionipucu betiği ile üst nesne olacaktır.
  • Özet konum Bunu, ipucunun hareketini başlatmak istediğiniz bir noktaya ayarlayın.
  • Süre CenteredParent etrafında döndürme için gereken süre (saniye cinsinden).
  • Animasyon eğrisi Bu, varsayılan olarak doğrusal bir eğriye ayarlanır, ancak hareket yolunu başlatıp durdururken, kolaylaştırıcı/dışarı hareket hızını sağlamak için eğriyi değiştirebilirsiniz.
  • Rotationvector Her eksen üzerinde kaç derece döndürüleceğini.

Komut dosyası aracılığıyla RotateAroundPoint denetleniyor

Özel betiğinizdeki bir RotateToTarget () çağrısı yapın. Bu, el ile CenteredParent etrafında döndürme işlemini başlatmak istediğinizde. Konumun özgün PivotPosition ' a sıfırlanmasını istediğinizde, ResetAndDeterminePivot () çağrısı yapın.

Animasyonlar aracılığıyla RotateAroundPoint'i denetleme

Taşıması gereken animasyonda iki olay ayarlayın: biri ResetAndDeterminePivot() çağrısıyla, biri RotateToTarget() çağrısıyla. Birinci ana karede ResetAndDeterminePivot ayarlanacak çünkü el platformu PivotPosition'a sıfırlanır. RotateToTarget, platformun CenteredParent etrafında döndürmeye başlamalarını istediğiniz ana karede ayarlanacak. Betik işlevi, sağlanan önfazlarda bu şekilde kullanılır.