Yerleştirmek için dokunun

TapToPlace

Yerleştirmek için dokunun, bir oyun nesnesini yüzeye yerleştirmek için kullanılan bir en etkileşim bileşenidir. Bu bileşen, nesneleri uzamsal bir kafeste yerleştirmek için yararlıdır. Yerleştirmek için dokunun iki tıklama ve baş hareket birleşimini kullanarak bir nesne yerleştirir. Yerleşimi başlatmak için bir tıklama, nesnenin konumunu denetlemek için baş hareket ve nesneyi sahneye yerleştirmek için bir tıklama.

Yerleştirmek için dokunun kullanma

  1. Sahneyi ayarlama

    • Yeni bir Unity sahneyi oluşturma
    • Karışık gerçeklik araç setisahneye Ekle ve Yapılandır ' a giderek sahne alanına mrtk ekleyin

    Not

    , MRTK giriş sistemi tarafından kullanılan tıklama tıklamalarını yerleştirmek için dokunun, ancak tıklama olmadan da denetlenebilmek üzere aşağıdaki kod yapılandırması ' na dokunun bölümüne bakın.

    • Sahneye bir küp ekleyin ve Ölçeği 0,2 olarak değiştirin ve konumu (0, 0, 0,7) olarak değiştirin.
  2. Collider ile bir oyun nesnesine yerleştirmek Için dokunun iliştirme

    TapToPlaceInspector

    • Yerleştirilecek dokunma bileşeni eklendiğinde, bir çözücü Işleyici de eklenir. Çözücü Işleyicisi gerektiren Çözücü sınıfından türeten türetilmiş bir yere dokunun. Nesneyi yerleştirmek için bir dokunma konumu, çözücü Işleyicisi içinde öğesine göre hesaplanır TrackedTargetType . Varsayılan olarak baş olur, TrackedTargetType yani baş ne zaman, seçiliyse nesne seçilir. , TrackedTargetType Ayrıca, denetleyiciyi Izleyen denetleyici Ray olarak da ayarlanabilir. Yerleştirilecek dokunma denetçisindeki ilk özellik grubu, ortak çözücü özelliklerdir.

    Önemli

    Tek başına bir çözücü yerleştirmek için dokunun ve diğer Lehler ile zincirleme yapılamaz. Lehverhandler. UpdateSolvers, nesne yerleştirirken nesnenin konumunu güncelleştirmek için kullanıldığından zincirleme yapılamaz.

    • Özellikleri yerleştirmek için dokunun:
      • Auto Start: True ise, çözücü yerleştirmek için dokunma, yerleştirilecek oyun nesnesinin konumunu denetlemeye başlayacaktır. Nesne, hemen TrackedTargetType (Head veya Controller Ray) takip eder. Bu değer, herhangi bir etkiye sahip olmak için Start () çağrılmadan önce değiştirilmelidir.
      • Default Placement Distance: Bir nesnenin varsayılan uzaklığı (ölçü cinsinden), SolverHandler içinde TrackedTargetType ileri 'ye göre yerleştirilir. Oyun nesnesi, bir yüzey raycast tarafından isabet ettirilirse varsayılan yerleştirme uzaklığına yerleştirilir.
      • Max Raycast Distance: Raycast için ' TrackedTargetType ' kaynağını temel alan en fazla uzaklık (ölçüm). Bu raycast seçili bir nesneyi yerleştirmek için bir yüzey arar.
      • UseDefaultSurfaceNormalOffset: Bu özellik varsayılan olarak true 'dur, yerleştirmekte olan nesnenin bir yüzey üzerinde hizalanmasını sağlar. Bu özellik true ise, özelliği için belirtilen herhangi bir değer yerine varsayılan yüzey normal boşluğu uygulanır SurfaceNormalOffset . False ise, değeri SurfaceNormalOffset uygulanır. Varsayılan yüzey normal boşluğu, z ekseni üzerinde Collider 'in kapsamları olur.
      • Surface Normal Offset: Raycast bir yüzeyi alıyorsa, oyun nesnesi merkezi arasındaki uzaklık ve yüzey normalin üzerinde bir yüzey. Bu özellik yalnızca false olduğunda bir nesneye uygulanır UseDefaultSurfaceNormalOffset .
      • Keep Orientation Vertical: True ise, yerleştirilecek oyun nesnesi sağ üst ve Vector3. up ile satır içinde kalır.
      • Rotate According to Surface: False ise, yerleştirilecek oyun nesnesi, yüzeyi vura göre dönüşünü değiştirmez. Isbeingyerleştirildiğinde nesne, kameraya açık kalır.
      • Magnetic Surfaces: En yüksekten en düşük önceliğe yürütülecek bir Layermaskelerinden oluşan dizi. Bir raycast isabeti sağlayan ilk katman maskesi, konum hesaplamaları için kullanılır.
      • Debug Enabled: True ise ve Unity düzenleyicisinde, raycast isabetin normal değeri sarı olarak çizilmez. Doğru olduğunda hata ayıklama etkin, RotateAccordingToSurface nesnenin neden geçerli yönlendirmesinde ayarlandığını görsel olarak açıklayan yüzey isabetini çizer.
      • On Placing Started: Bu olay, yerleştirilecek oyun nesnesi seçildiğinde tetiklenir.
      • On Placing Stopped: Bu olay, yerleştirilecek oyun nesnesi seçilmediğinde, yerleştirildiğinde tetiklenir.
  3. Düzenleyicide davranışı yerleştirmek için dokunma testi

    • Oynat ' a basın ve bir giriş simülasyonu göstermek için boşluk çubuğunu basılı tutun.
    • Küp odaklanana kadar hareketi taşıyın ve sol fare ile tıklayarak giriş simülasyonu ile bir tıklama simülasyonu yapın.
      • Sahnede çarpışmaları yoksa, nesne tanımlı ' ı takip eder TrackedTargetTypeDefault Placement Distance .
    • Nesne, TrackedTargetType After seçiminin hareketini izler. Düzenleyicide baş hareketi benzetimini yapmak için, bulunan Anahtarlarınıza basın. Sağ fareyle tıklayarak ve basılı tutarak baş döndürmeyi değiştirin.
    • Nesneyi yerleştirmeyi durdurmak için tekrar tıklayın. Nesnenin, durdurma yerleşimi için odağa sahip olması gerekmez. Odak yalnızca yerleştirme işlemini başlatan ilk tıklama için gereklidir.
    TrackedTargetType: Head (varsayılan) TrackedTargetType: Controller Ray
    Giriş simülasyonu baş denetim ışını yerleştirmek Için dokunun Giriş simülasyonu denetleyicisi Ray 2 ' ye dokunarak

Kod yapılandırması yerleştirmek için dokunun

Nesne seçimi zamanlamasını yerleştirmek için dokunun, StartPlacement()StopPlacement() bir tıklama olayı istemek yerine ve aracılığıyla da denetlenebilir. Bu özellik, testleri yazmak için yararlıdır ve MRTK giriş sistemini kullanmadan düzenleyiciye bir nesne yerleştirmek için alternatif bir yöntem sağlar.

  1. Boş bir oyun nesnesi oluştur

  2. Boş oyun nesnesine aşağıdaki örnek betiği oluşturun ve ekleyin

    using UnityEngine;
    using Microsoft.MixedReality.Toolkit.Utilities.Solvers;
    
    public class TapToPlaceInputExample : MonoBehaviour
    {
        private GameObject cube;
        private TapToPlace tapToPlace;
    
        void Start()
        {
            cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
            cube.transform.localScale = Vector3.one * 0.2f;
            cube.transform.position = Vector3.forward * 0.7f;
    
            tapToPlace = cube.AddComponent<TapToPlace>();
        }
    
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.U))
            {
                tapToPlace.StartPlacement();
            }
            if (Input.GetKeyDown(KeyCode.I))
            {
                tapToPlace.StopPlacement();
            }
        }
    }
    
  3. Yürütme modunda, küpü yerleştirmeye başlamak için U tuşuna basın

  4. Yerleşimi durdurmak için ı tuşuna basın

Örnek sahneyi yerleştirmek için dokunun

Örnek sahneyi yerleştirmek için dokunun, her biri farklı bir yapılandırmaya sahip 4 yerleştirilebilir nesneden oluşur. Örnek sahne, hiyerarşide varsayılan olarak devre dışı bırakılan yüzey yerleştirme davranışını göstermek için duvarlar içerir. Örnek sahneyi, yayın sayfasındabulunan Microsoft. MixedReality. Toolkit. Unity. examples Unity paketinde bulabilirsiniz. Sahne konumu: mrtk. Örnekler/gösteriler/Lehcılar/sahneler/TapToPlaceExample. Unity

Örnek yerleştirmek Için dokunun

Ayrıca bkz.