#0 

12-03-2014 01:24:34

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

Bonjour,

Pour faire un mode multijoueur j'aimerais utiliser 2 manettes, pour cela j'ai donc pensé récuperer l'id de chaque manette. Mon probleme c'est que je ne vois pas comment faire cela, j'ai lu la doc et j'ai vue que l'on peut récupérer les informations sur les joysticks dont le nombre de joysticks.

Mais je n'ai pas trouvé de methode du genre joystick->getID(). Je sais que par défaut irrlicht attribut la valeur 0 a la manette 1 et 1 à la manette 2.

Mais est-ce que quelqu'un sait comment je pourrais tester si un bouton à été appuyé sur la manette 1 ou la manette 2 ?

J'espère que mon explication est claire :s.

Merci.

Hors ligne


#1 

12-03-2014 22:27:13

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

event.JoystickEvent.Joystick correspond a l'id du joystick emetteur

event : SEvent

http://irrlicht.sourceforge.net/docu/st … af501cae44

Hors ligne


#2 

13-03-2014 16:48:44

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

Ok merci Magun. Enfait pour savoir si cest la manette 1 ou la deux j'ai juste à faire ce test :

Code:

If(event.JoystickEvent.Joystick == 0)

Et si c'est l'autre je fait == 1 ?
Par contre j'ai une autre question...
Si il y a 1 joueur ça fait un événement à recevoir mais si il y à deux joueurs comment géré ça car le driver reçoit qun seul type d'événement non?

Hors ligne


#3 

14-03-2014 18:56:41

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

Je n'ai pas compris ...
Tes évènements seront toujours émis de façon séquentielle, donc peu importe.

Code c++ :


if(event.JoystickEvent.Joystick == 0)
{
    // joueur 1
}
else
{
    // joueur 2
}



?

Hors ligne


#4 

15-03-2014 08:38:20

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

En fait je voulais savoir s'il était possible de créer une fonction onevent generique pour chaque joueur pour éviter de copier le code plusieurs fois dans la même fonction. Mais ducoups le problème avec le générique c'est que sa fait avoir 2 fonction on event pour 2 joueurs et donc deux événements a envoyer au driver.

Enfait je pensais que je pouvais gérer les événements comme je te l'ai annoncé au dessus.

Hors ligne


#5 

16-03-2014 13:09:17

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

le plus simple c'est d'avoire un array pour t'est deux joueur
de tel sorte que tu n'est cas faire quelque chose du style:

Code c++ :


if(event.JoystickEvent.Joystick > player.size() return;

if(blablabla) player[event.JoystickEvent.Joystick]->forkward(0);    // forkward
if(blablabla) player[event.JoystickEvent.Joystick]->forkward(180);  // backward
if(blablabla) player[event.JoystickEvent.Joystick]->forkward(90);   // strafe rigth
if(blablabla) player[event.JoystickEvent.Joystick]->forkward(-90);  // strafe left
if(blablabla) player[event.JoystickEvent.Joystick]->rotate(1);      // right
if(blablabla) player[event.JoystickEvent.Joystick]->rotate(-1);     // left



avec player = irr::core::array<Player*> (ta class joueur)
ainssi peut import event.JoystickEvent.Joystick le player adequat seras animer

après non tu ne peut pas avoir plusieur evenement simultanement donc, si tu utilise deux OnEvent un seul des deux ne seras effectif
tu peut faire une fonction OnEventPlayer(int player, const irr::SEvent&); que tu appelle dans OnEvent(...) mais tu retombe dans le cas que je t'est expliquer en premier

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
882 membres
1429 sujets
11119 messages
Dernier membre inscrit: LiseBuisson96
43 invités en ligne
Aucun membre connecté
RSS Feed