Jump to content
Unity Insider Forum

Trigger von Controller anstelle von Mausklick verwenden


ariedel

Recommended Posts

Hallo zusammen,

ich habe ein Modell einer Windkraftanlage erstellt. Die Komponenten habe ich in Unity 2019.4.28f1 mit Pop-Up-Fenstern versehen. Sprich sobald ich diese mit der Maus anklicke, wird ein Fenster mit Informationen geöffnet. Nun habe ich das Ganze noch mit Hilfe des MRTK so konfiguriert, dass ich das Modell in VR sehen kann. Auch die Controller kann ich im Modell sehen. Leider schaffe ich es nicht, die Fenster mit Hilfe des Triggers anstelle des Mausklicks zu öffnen. Kann mir jemand helfen?

Folgendes Skript verwende ich für die Mauseingabe:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Gondel : MonoBehaviour
{
    public GameObject TextBox2;
    void OnMouseDown()
    {
        if (TextBox2 != null)
        {
            bool isActive = TextBox2.activeSelf;

            TextBox2.SetActive(!isActive);
        }
    }
}

 

Folgende Hardware nutze ich:

VR-Headset samt Motioncontroller: HP 1440² SPATIAL Computing

 

Gruß Alex

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

ich nutze einfach das Mixed Reality Portal von Microsoft. Und in Unity habe ich das MixedRealityToolKit installiert. Ich bin jetzt soweit, dass ich Buttons mit den Controllern betätigen kann. Nur das Klicken auf die Gameobjekte will einfach nicht funktioniern (bzw. ich kann draufklicken aber es öffnet sich kein Fenster).

Folgenden Code habe ich dafür verwendet:

using UnityEngine;
using UnityEngine.EventSystems;

public class GondelVR : MonoBehaviour, IPointerClickHandler
{
    public GameObject TextBox2;
    //Detect if a click occurs
    public void OnPointerClick(PointerEventData pointerEventData)
    {
        if (TextBox2 != null)
        {
            bool isActive = TextBox2.activeSelf;

            TextBox2.SetActive(!isActive);
        }
    }
}


Ich habe auf das Gameobjekt ein Mesh-Collider gelegt und dann mein Skript hinzugefügt. Was mache ich falsch?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

also so wie ich das verstehe unterstützt Microsoft das Ganze. Ich hab mal ein Screenshot von dem Projekt gemacht. Vllt erkennt man da ja schon einen Fehler.

 

Unity VR Corner Cave.JPG

 

Dort kann ich auch die Komponente "PointerHandler" hinzufügen. Weiß aber nicht was ich damit dann genau machen muss...

 

485933854_UnityVRCornerCave2.thumb.JPG.9eefc89d5ba722012fcb79292e62460b.JPG

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich glaube, du bringst da ein paar Systeme durcheinander. Ein MeshCollider ist kein UI-Element. Wenn du auf einen Collider drücken willst dann musst du von irgendwo aus einen Raycast schießen. Bei einer Anwendung auf einem normalen Bildschirm wäre das z.B. von der Kamera aus in Abhängigkeit zur Mausposition. In VR ist das alles nicht so standartisiert, da kann man entweder den Controller wie einen Laser Pointer benutzen oder in die Nähe halten. Ersteres wäre wieder ein Raycast, aber halt vom Controller aus und nicht von der Kamera, letzteres wäre z.B. mit einem Trigger am Collider zu machen. Die ganzen PointerHandler-Dinger sind für UI-Elemente da, also das, was du in einem UI-Canvas unterbringst. Das ist ein völlig anderes System, das mit Colliders nichts am Hut hat.

Was allerdings sein kann ist, dass Microsoft da Interfaces von Unity schlicht zweckentfremdet und das, was du da tust, tatsächlich dem entspricht, was Microsoft vorsieht. In dem Fall müsstest du dich aber direkt bei Microsoft informieren, die haben für ihr Paket hoffentlich eine brauchbare Dokumentation.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 weeks later...
Am 2.9.2021 um 13:01 schrieb Sascha:

IPointerClickHandler sind für das EventSystem von UnityEngine.UI. Ich kann nicht sagen, ob Microsofts Paket das unterstützt. Hast du von Microsoft keine Ressourcen dazu gefunden?

Unity hat dazu allgemeine VR Packages, wo man nur beim Canvas ein Component reinpacken muss. Zusätzlich noch paar für die Controller für die Raycasts. Danach gehen diese Events auch normal für VR.

https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@1.0/manual/index.html#ui-interaction-setup

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...