Faire un jeu multijoueur
Bonjour à tous, dans ce tutoriel je vais vous expliquer comment créer un jeu multijoueur en local avec Unity 5. Pour cela, ouvrez votre projet.
Sur votre joueur intitulé Player (First Player Controller ou Third Person Controller), vous devrez ajoutez une Network View. pour cela faites
Add Component ==> Network View
Il faut remplir les champs comme ceci:
State Synchronisation: Reliable Delta Compressed
Observed: Player (Transform)
Comme ceci:
Maintenant, vous devrez créer deux scripts javascript intitulés script1.js et script2.js à la racine de votre projet et les ajouter à votre Player.
Dans le fichier script1.js, on va écrire ceci:
var playerPrefab : GameObject;
var spawnObject : Transform;
var gameName : String = « level »;
private var refreshing : boolean = false;
private var hostData : HostData[];
function OnGUI () {
var time: int;
GUI.Label(new Rect(10,10,250,100), « Score: » + Time.time);
if(!Network.isClient && !Network.isServer) {
if (GUI.Button(Rect(Screen.width/2,Screen.height/2,100,20), »Démarrer Serveur »)) {
startServer();
}
if (GUI.Button(Rect(Screen.width/2,Screen.height/2 + 30,100,20), »Rafraichir »)) {
Debug.Log(« Refresh »);
refreshHostList();
}
if(hostData) {
for(var i:int = 0; i<hostData.length; i++) {
if(GUI.Button(Rect(Screen.width/2,Screen.height/2 + 60,100,20),hostData[i].gameName)) {
Network.Connect(hostData[i]);
}
}
}
}
}
function Update () {
if(refreshing) {
if(MasterServer.PollHostList().Length > 0) {
refreshing = false;
Debug.Log(MasterServer.PollHostList().Length);
hostData = MasterServer.PollHostList();
}
}
}
function startServer () {
Network.InitializeServer(32,25003, !Network.HavePublicAddress);
MasterServer.RegisterHost(gameName, « Rejoindre », » this is a tutorial »);
}
function OnServerInitialized () {
Debug.Log(« server initialized »);
spawnPlayer();
}
function OnConnectedToServer () {
spawnPlayer();
}
function spawnPlayer () {
Network.Instantiate(playerPrefab, spawnObject.position, Quaternion.identity, 0);
}
function OnMasterServerEvent(mse:MasterServerEvent) {
if(mse == MasterServerEvent.RegistrationSucceeded) {
Debug.Log(« Registered Server »);
}
}
function refreshHostList () {
MasterServer.RequestHostList(gameName);
refreshing = true;
}
Dans le fichier script2.js, on va écrire ceci:
function Awake() {
if (!GetComponent.<NetworkView>().isMine){ GetComponentInChildren(Camera).enabled = false;
// disable the camera of the non-owned Player;
GetComponentInChildren(AudioListener).enabled = false;
// Disables AudioListener of non-owned Player – prevents multiple AudioListeners from being present in scene.
GetComponentInChildren(MouseLook).enabled = false; GetComponentInChildren(FPSInputController).enabled = false;
}
}
Revenons à nos moutons.
Ajoutez un objet vide sur la scène appelé spawnObject
Dans votre Player, allez voir script1.js et assignez les propriétés suivantes.
Player Prefab: Player
Spawn Object: spawnObject (transform)
Game Name: mettez ce que vous voulez
Lancez votre jeu, normalement vous pourrez soit créer un serveur en faisant
Create Server
Soit rejoindre un serveur déjà existant sur le meme réseau en faisant
Refresh Hosts ==> Tutorial Game
Et voilà notre beau résultat
Bonsoir
Pour moi cela ne marche pas j’ai copier collez rien
J’ai tout tapez et toujours des erreurs pour la ligne GUI.Label….
Je ne sais pas de ou ça vient. Pourriez-vous m’aidez ?