#1 

12-03-2014 00:24:34

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 31.37.221.53
Courriel

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


#2 

12-03-2014 21:27:13

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 92.146.106.136
Courriel  Site web

Hors ligne


#3 

13-03-2014 15:48:44

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 31.37.221.53
Courriel

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

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


#4 

14-03-2014 17:56:41

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 92.146.106.136
Courriel  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


#5 

15-03-2014 07:38:20

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 80.215.195.122
Courriel

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


#6 

16-03-2014 12:09:17

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 92.146.106.136
Courriel  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é
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
173 invités en ligne
membre en ligne: -
RSS Feed