Klepnutím umístěte

TapToPlace

Klepněte na místo je komponenta daleko interakcí, která se používá k umístění herního objektu na povrch. Tato komponenta je užitečná pro umístění objektů do prostorové sítě. Klepnutím na místo použijete kombinaci dvou kliknutí a pohybu hlavy k umístění objektu. Kliknutím zahájíte umístění, pohybem hlavy řídíte pozici objektu a kliknutím umístěte objekt do scény.

Použití funkce Klepněte na místo

  1. Nastavení scény

    • Vytvoření nové scény Unity
    • Přidejte MRTK do scény tak, že přejdete na Mixed Reality Toolkit Add to Scene and Configure (Přidat do scény a nakonfigurovat).

    Poznámka

    Klepnutím na místo použijete kliknutí řízená vstupním systémem MRTK, ale můžete ho ovládat i bez kliknutí. Další informace najdete níže v části Tap To Place Code Configurability (Konfigurovatelnost kódu klepnutím na místo).

    • Přidejte do scény datovou krychli, změňte měřítko na 0,2 a změňte umístění na (0, 0, 0,7).
  2. Připojení klepnutím na místo k herním objektu pomocí kolace

    TapToPlaceInspector

    • Po přidání komponenty Klepněte na místo se připojí také obslužná rutina solveru. Klepnutím na místo se odvozuje z třídy Solver, která vyžaduje obslužnou rutinu Solveru. Pozice objektu Tap to Place se vypočítá relativní vzhledem k objektu TrackedTargetType v rámci obslužné rutiny solveru. Ve výchozím nastavení je Head (Hlavička), t.j. když se přesouvá, objekt následuje, TrackedTargetType pokud je vybraný. Vlastnost TrackedTargetType je také možné nastavit na Controller Ray, která má za kontroleru objekt . První skupinou vlastností v inspektoru Klepněte na místo jsou vlastnosti Common Solver ( Běžný řešitel).

    Důležité

    Klepnutím na místo je samostatný řešitel a nelze ho zřetězovat s jinými řešiteli. Nelze jej zřetězovat, protože metoda SolverHandler.UpdateSolvers slouží k aktualizaci pozice objektu během jeho umístění.

    • Klepnutím umístěte vlastnosti:
      • Auto Start: Pokud je true, začne řešitel Klepnutím na místo řídit pozici herního objektu, který se má umístit. Objekt se okamžitě spustí za trackedTargetType (Head nebo Controller Ray). Tato hodnota se musí před vyvoláním metody Start() upravit, aby to mělo nějaký účinek.
      • Default Placement Distance: Výchozí vzdálenost (v metrech) se umístí objekt relativně k objektu TrackedTargetType dopředu v SolverHandler. Objekt hry se umístí do výchozí vzdálenosti umístění, pokud paprskové vysílání nenarazí na povrch.
      • Max Raycast Distance: Maximální vzdálenost (metry) pro paprskové vysílání na základě původu 'TrackedTargetType'. Toto paprskové vysílání hledá povrch pro umístění vybraného objektu.
      • UseDefaultSurfaceNormalOffset: Tato vlastnost je ve výchozím nastavení pravdivá, zajišťuje zarovnání objektu na povrch. Pokud je tato vlastnost true, použije se výchozí normální posun povrchu místo jakékoli hodnoty zadané pro SurfaceNormalOffset vlastnost . Pokud má hodnotu false, použije SurfaceNormalOffset se hodnota pro . Výchozí normální posun plochy je rozsahy kolace podél osy Z.
      • Surface Normal Offset: Vzdálenost mezi středem herního objektu, který se má umístit, a povrchem po povrchu normálního povrchu, pokud se paprskové vysílání dostane na povrch. Tato vlastnost se použije pouze u objektu, pokud UseDefaultSurfaceNormalOffset má hodnotu false.
      • Keep Orientation Vertical: Pokud je true, objekt hry, který se má umístit, zůstane vzpřímený a v souladu s Vector3.up.
      • Rotate According to Surface: Pokud je hodnota false, objekt hry, který se má umístit, nezmění svou rotaci podle toho, na co se povrch vynoří. Objekt zůstane tváří v tvář fotoaparátu, zatímco IsBeingPlaced je true.
      • Magnetic Surfaces: Pole LayerMasks, které se má spustit od nejvyšší k nejnižší prioritě. Pro výpočty pozice se použije maska první vrstvy, která poskytuje náhon paprskového vysílání.
      • Debug Enabled: Pokud je true a v Editoru Unity, bude normál náhona paprskového vysílání vykreslený žlutou barvou. Ladění je povolené, pokud je true, protože vykresluje normální povrch, který vizuálně vysvětluje, proč je objekt nastaven RotateAccordingToSurface při aktuální orientaci.
      • On Placing Started: Tato událost se aktivuje jednou, když je vybrán objekt hry, který se má umístit.
      • On Placing Stopped: Tato událost se aktivuje jednou, když se zruší výběr a umístění objektu hry, který se má umístit.
  3. Testování chování klepnutím na místo v editoru

    • Stisknutím přehrání a podržením mezerníku zobrazíte simulační vstup ručně.
    • Pohybujte rukou, dokud se datová krychle nezaměří na fokus, a simulujte kliknutí pomocí ruční simulace vstupu kliknutím levým myší.
      • Pokud ve scéně nejsou k dispozici kolace, bude objekt sledovat objekt TrackedTargetType v definovaném objektu Default Placement Distance .
    • Objekt bude následovat po výběru TrackedTargetType objektu . Pokud chcete simulovat pohyb hlavy v editoru, stiskněte klávesy WASD. Kliknutím a podržením pravého myši změňte otočení hlavy.
    • Pokud chcete umístění objektu zastavit, klikněte znovu. Objekt nemusí být při kliknutí na zastavení umístění fokusu. Fokus se vyžaduje pouze pro počáteční kliknutí, které spustí proces umístění.
    TrackedTargetType: Head (výchozí) TrackedTargetType: Controller Ray
    Klepněte na To Place Input Simulation Head Control ray (Umístění paprsku ovládacího prvku head control simulace vstupu). Klepnutím umístěte kontroler simulace vstupu Ray 2.

Klepnutím umístěte konfigurovatelnost kódu.

Klepnutím na umístit čas výběru objektu lze také řídit prostřednictvím StartPlacement()StopPlacement() a místo vyžadování události kliknutí. Tato funkce je užitečná při psaní testů a poskytuje alternativní metodu pro umístění objektu do editoru bez použití vstupního systému MRTK.

  1. Vytvoření prázdného herního objektu

  2. Vytvořte a připojte následující příklad skriptu k prázdnému objektu game.

    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. V režimu přehrávání stiskněte klávesu U a začněte umisťovat datovou krychli.

  4. Stisknutím klávesy I zastavte umístění.

Klepnutím umístěte příklad scény

Příklad scény Klepnutím na místo se skládá ze 4 umístitelných objektů, z nichž každý má jinou konfiguraci. Příklad scény obsahuje stěny, které zobrazují chování při umísťování ploch, které jsou v hierarchii ve výchozím nastavení zakázané. Příklad scény najdete v Microsoft.MixedReality. Toolkit. Balíček Unity.Examples unity najdete na stránce vydání. Umístění scény je MRTK. Příklady/Ukázky/Řešitelé/Scény/TapToPlaceExample.unity

Příklad klepnutím na

Viz také