Local multiplayer : problème de transition d'input et de controller

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Bilu
Messages : 91
Inscription : 20 Nov 2019 09:24

Local multiplayer : problème de transition d'input et de controller

Message par Bilu » 02 Oct 2023 11:19

Bonjour à tous,

J'ai une première scène pour que les joueurs choisissent une couleur et une deuxième scène pour que les joueurs se battent.
Dans la première scène j'utilise la ligne de script suivante pour ajouter "ranger " dans une variable _playerController le controleur du joueur :

Code : Tout sélectionner

public static Dictionary<int, InputDevice> _playerController = new Dictionary<int,InputDevice>();
.
.
.
_playerController.Add(index, controller.devices[0]);
Ensuite dans la deuxième scène, j'utilise la ligne de code suivante pour reconnecter le bon controlleur au bon joueur :

Code : Tout sélectionner

player1 = PlayerInput.Instantiate(_playerPrefab, player.Key, playerControlScheme, -1, playerController);
Mais voilà le problème :
si un joueur rejoint la partie en utilisant le clavier dans la première scène, il peut se déplacer avec le clavier et regarder dans la direction où pointe la souris car dans son Composant "Player Input", il y a sur la ligne "devices" : Devices = Keyborad; Mouse. Puis en deuxième scène, le même joueur peut réutiliser ce même clavier pour jouer dans la deuxième scène MAIS plus avec la souris car on lui a seulement donné le _playerController.devices[0] et non le _playerController.devices[1]. Et dans la deuxième scène sur la ligne "device", il n'y a en fait que le clavier "Devices = Keyboard". Si le joueur, dans la première scène, rejoint le jeu en utilisant la souris, la ligne des devices devient Devices = Mouse;Keyboard. Ainsi dans la première scène rien ne change (le joueur peut utiliser le clavier et la souris). Mais dans la deuxième scène, ce joueur n'a que la souris dans devices, il ne peut donc plus bouger, il ne peut que regarder là où pointe la souris.
J'ai donc essayé :

Code : Tout sélectionner

player1 = PlayerInput.Instantiate(_playerPrefab, player.Key, playerControlScheme, -1, Keyboard.current, Mouse.current);
et

Code : Tout sélectionner

player1.SwitchCurrentControlScheme("Keyboard&Mouse", Keyboard.current, Mouse.current);
Mais cela n'a pas arrangé le problème.
Dans Unity mon control scheme est "Keyboard&Mouse" et les deux input sont bien séléctionnés

Je précises que du coup, si les joueurs utilisent un gamepad, il n'y a aucun problème

Est ce que quelqu'un peut m'aider ?
Pièces jointes
Keyboard&Mouse.png
Keyboard&Mouse.png (24.37 Kio) Consulté 1603 fois

Bilu
Messages : 91
Inscription : 20 Nov 2019 09:24

Re: Local multiplayer : problème de transition d'input et de controller

Message par Bilu » 02 Oct 2023 22:26

J'ai trouvé le problème.
Cela vient d'autres lignes de mon script...

Code : Tout sélectionner

var inputUser = joueur1.user;
player1.SwitchCurrentControlScheme(playerControlScheme);
InputUser.PerformPairingWithDevice(playerController, inputUser, InputUserPairingOptions.UnpairCurrentDevicesFromUser);
et ces lignes rendent toutes les autres lignes inutiles... J'ai oublié de mettre ces lignes en commentaire...

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6225
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Local multiplayer : problème de transition d'input et de controller

Message par boubouk50 » 03 Oct 2023 08:58

Tant mieux si tu as trouvé ton problème.

Je me permets néanmoins de faire la remarque parce que c'est très souvent le cas :
Tu ne nous mets jamais assez de code pour qu'on puisse trouver la solution. Arrête de le tronquer et de penser qu'on peut trouver la solution avec quelques lignes. Un code, ça s'exécute du Awake() au OnDestroy(), il nous faut donc tout le code qui s'exécute lors d'un lancement.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Scripting »