Comment détecter que l'utilisateur a appuyé sur la gâchette ?

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous !

D’après la documentation de Unity, je devrais utiliser Axis1D.SecondaryIndexTrigger pour pouvoir détecter si l’utilisateur appuie sur le déclencheur du joystick identifié par le chiffre 7 (sur l’image du HTC Vive et dans le tableau décrivant les entrées, les deux sont affichés dans le lien ci-dessus).

Cependant, quand je tape if(Input.GetAxis(Axis1D.SecondaryIndexTrigger)), le compilateur dit:

error CS0103: The name `Axis1D’ does not exist in the current context

Axis1D semble être nécessairement importé ou autre pour être utilisable. Comment pourrais-je faire ça s’il vous plaît ?

Merci d’avance !

Édité par anonyme

+0 -0

Cette réponse a aidé l’auteur du sujet

Ça fait un moment que j’ai plus touché à Unity et j’ai pas trop le temps de regarder la doc sur mon téléphone, mais normalement tu dois avoir le plugin SteamVR et avant toute chose, il faut voir s’il détecte déjà les joysticks (tu as normalement une fonction du genre GetJoystick qqch).

Ensuite, peux-tu fournir le bout de code qui va avec ? Parce qu’on peut pas deviner s’il y a une erreur dans ton code. :P

Édité par Arius

Assez occupé IRL — MP au besoin. Je ne mords pas (toujours)

+0 -0
Auteur du sujet

Yo Arius !

En fait je suis censé pouvoir me passer de l’asset SteamVR et même celui de l’Oculus (ou autre), car d’après la doc Unity fournit une interface entre le dev et le matos permettant de faire abstraction du matos.

Et l’une des fonctionnalités serait justement la propriété Axis1D.Secondary[…] tout comme le Input.Get[…].

+0 -0

Cette réponse a aidé l’auteur du sujet

Non, non. Tu as normalement besoin de SteamVR (et du plugin, accessoirement mais faut le prendre) pour utiliser OpenVR puisque c’est lui l’interface qui permet de détecter et utiliser les différents contrôleurs (Vive, etc.).

VROverview + OpenVR

Édité par Arius

Assez occupé IRL — MP au besoin. Je ne mords pas (toujours)

+0 -0
Auteur du sujet

Bonjour !

Désolé du retard (partiels et projet à finir !).

Effectivement, j’ai dû passer par SteamVR et ainsi utiliser la méthode GetHairTrigger() de la classe Device (paquetage SteamVR_Controller) pour savoir si oui ou non l’appui de la gâchette vient d’avoir lieu (cette fc° retourne un booléen).

Pour savoir si l’utilisateur a appuyé à gauche ou à droite du touchpad (non-demandé dans mon OP) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Avec `device` l'instance de la classe `Device` 
if (device.GetPress(SteamVR_Controller.ButtonMask.Touchpad))...
...
Vector2 touchpad = (device.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0));
        print("Pressing Touchpad");

        if (touchpad.y > 0.7f)
        {
            print("Moving Up");
        }

        else if (touchpad.y < -0.7f)
        {
            print("Moving Down");
        }

        if (touchpad.x > 0.7f)
        {
            print("Moving Right");

        }

        else if (touchpad.x < -0.7f)
        {
            print("Moving left");
        }
...
+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte