Découvrez comment placer précisément vos joueurs dans vos mondes multiplayer.
Jusqu'à maintenant sur l'utilisation de Mirror , nous avons pris en main la solution mutiplayer, et vu comment gérer les animations, mais les prefabs instantiés de chaque joueur, sont placés aléatoirement en position dans le monde 3D.
Il est temps de voir comment assigner une position précise dans le monde avec un nouveau composant : NetworkStartPosition !
Pensez à télécharger le projet Mirror depuis Github. Un souci pour le faire ? Suivez le guide pour utiliser un projet Unity . Allez encore plus loin avec un Atelier complet dédié à Github .
Préparer la scène
En repartant d'une copie de la scène du second tutoriel dédié à Mirror, nous allons ajouter des GameObjects qui représenteront les points de spawn.
Un SpawnPoint est donc composé:
- D'un parent (Spawn1, Spawn2 ...) qui aura le composant NetworkStartPosition
- D'un enfant cube (ou sphère), permettant de visualiser par un modèle 3D la position du spawnPoint
- D'un autre enfant "logo-gps", permettant de visualier par un sprite (2D) cette même position
Ainsi il suffit de donner le composant NetworkStartPosition au Parent.
Et c'est tout !
Composant NetworkStartPosition de Mirror
Le composant NetworkStartPosition , selon la documentation, permet de prendre le contrôle sur les positions de spawn des joueurs.
En effet par défaut tous les prefabs seront instantiés à la position (0,0,0) du monde 3D ... pas terrible, hein ?
Si maintenant on ajoute des GameObjects avec ce composant dans la scène, le NetworkManager ajoutera automatiquement ces spawnPoints dans sa liste et les utilisera... c'est aussi simple que cela !
De plus il existe deux méthodes de distribution lorsqu'un joueur se connecte:
- Random: distribution aléatoire, le même spawnPoint peut être utilisé plusieurs fois
- Round Robin: utilise chaque spawnPoint dans l'ordre de sa liste (ordre des GameObjects SpawnPoint dans la hierarchy), jusqu' à ce qu'il y ait plus de joueurs que de SpawnPoints.
Vous pouvez ajuster ce paramètre sur le composant NetWorkManager.
Tester la distribution du NetworkManager
Maintenant que les GameObjects SpawnPoints sont dans notre scène, et que le composant NetworkManager est ajusté sur "Round Robin", nous allons pouvoir tester un nouveau build.
Encore une fois, il faut bien penser à lancer une instance du jeu en host et client, et une autre instance en host uniquement.
Ainsi en utilisant la distribution Round Robin, le premier joueur se place bien sur le premier SpawnPoint disponible (Spawn1 dans notre hierachy). Vous pouvez relancer tant que vous voulez .. le host sera toujours instantié sur Spawn1.
Si maintenant vous changez la distribution pour Random, il est alors possible que les joueurs soient placés en Spawn2, alors que personne n'a été placé au Spawn1.
Ainsi vous savez maintenant comment assigner des positions précises dans votre monde 3D, lorsque les joueurs se connectent à votre jeu.