Jump to content
Unity Insider Forum

Trigger von Controller anstelle von Mausklick verwenden


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 to comment
Share on other sites

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 to comment
Share on other sites

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 to comment
Share on other sites

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 to comment
Share on other sites

  • 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

  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...