Bonjour à tous,
Je ne suis pas dev de jeux... Mais je suis Frontend en web ! le code est ma passion.
Bref, je rencontre un problème dans mon petit jeu.
J'ai suivi un tutoriel pour créer un jeu sur unity 5, node.js et socketIO. Tout fonctionne correctement.
Mon perso spawn, il peut bouger, il peut tirer etc.. Mon seul problème est que quand je met une camera sur mon prefab player et qu'un autre joueur se connecte.. le deuxième joueur voit a travers la caméra du premier mais il bouge bien son personnage.. Je ne sais pas si c'est un phrase compréhensible mais voila je suis bloqué..
Est-il possible de faire un script qui donne une sorte ID au camera pour les lier au nouveau joueur ? merci
Ah oui et quand je lance le jeu en CTR+B et sur unity pour tester... et que je retourne dans ma scène tout en laissant le jeu tourner. Et que je vais chipoter dans les cameras de met joueurs au niveau des clear flags... et que je reviens sur mes deux session ca fonctionne, chaque personnage a sa propre camera ..
Y a-t-il moyen peut de refresh cette option ? de l'actualisé au lancement des sessions ? merci
Benjimare,
[DB-RS] Jeux Socket - problème de camera
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
- boubouk50
- ModoGenereux
- Messages : 6255
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Jeux Socket - problème de camera
Bonjour Benjimare,
Avant de te répondre correctement, plusieurs choses:
- Peux-tu te présenter dans la section adéquate pour qu'on en sache un peu plus sur toi, stp.
- Tu es ici dans la section code, pourtant tu ne transmets pas de code. S'il s'agit de problème de code, poste-le qu'on voit où ça pêche, sinon tu es dans la mauvaise section. (On se chargera de déplacer maintenant que le sujet est créé ici)
- Peux-tu également donner plus de précisions? un autre joueur se connecte. Comment? Réseau ou local? Quel asset utilises-tu pour le réseau? Tout ce qui pourra nous aiguiller sur ton problème.
Merci.
Avant de te répondre correctement, plusieurs choses:
- Peux-tu te présenter dans la section adéquate pour qu'on en sache un peu plus sur toi, stp.
- Tu es ici dans la section code, pourtant tu ne transmets pas de code. S'il s'agit de problème de code, poste-le qu'on voit où ça pêche, sinon tu es dans la mauvaise section. (On se chargera de déplacer maintenant que le sujet est créé ici)
- Peux-tu également donner plus de précisions? un autre joueur se connecte. Comment? Réseau ou local? Quel asset utilises-tu pour le réseau? Tout ce qui pourra nous aiguiller sur ton problème.
Merci.
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Jeux Socket - problème de camera
Voilà ma présentation faites !
Pour l'instant j'ai créer un serveur js avec la technologie socketIO
Voici le script
Grâce a ce script je peux lancer un serveur local, que je control avec l'acces command windows.
Ma question c'est : Comment faire pour que chaque personne qui lance mon jeu et qui se connecte aient leur propre vue fps (derrière leur perso).
Mon problème : Dès que quelqu'un se connecte (en local) les deux voient a travers 1 camera... compliqué a expliquer...
Sujet déplacé
Les balises code SVP
Merci de lire la Netiquette.
Pour l'instant j'ai créer un serveur js avec la technologie socketIO
Voici le script
Code : Tout sélectionner
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(3000);
// global variables for the server
var enemies = [];
var playerSpawnPoints = [];
var clients = [];
app.get('/', function(req, res) {
res.send('hey you got back get "/"');
});
io.on('connection', function(socket) {
var currentPlayer = {};
currentPlayer.name = 'unknown';
socket.on('player connect', function() {
console.log(currentPlayer.name+' recv: player connect');
for(var i =0; i<clients.length;i++) {
var playerConnected = {
name:clients[i].name,
position:clients[i].position,
rotation:clients[i].position,
health:clients[i].health
};
// in your current game, we need to tell you about the other players.
socket.emit('other player connected', playerConnected);
console.log(currentPlayer.name+' emit: other player connected: '+JSON.stringify(playerConnected));
}
});
socket.on('play', function(data) {
console.log(currentPlayer.name+' recv: play: '+JSON.stringify(data));
// if this is the first person to join the game init the enemies
if(clients.length === 0) {
numberOfEnemies = data.enemySpawnPoints.length;
enemies = [];
data.enemySpawnPoints.forEach(function(enemySpawnPoint) {
var enemy = {
name: guid(),
position: enemySpawnPoint.position,
rotation: enemySpawnPoint.rotation,
health: 100
};
enemies.push(enemy);
});
playerSpawnPoints = [];
data.playerSpawnPoints.forEach(function(_playerSpawnPoint) {
var playerSpawnPoint = {
position: _playerSpawnPoint.position,
rotation: _playerSpawnPoint.rotation
};
playerSpawnPoints.push(playerSpawnPoint);
});
}
var enemiesResponse = {
enemies: enemies
};
// we always will send the enemies when the player joins
console.log(currentPlayer.name+' emit: enemies: '+JSON.stringify(enemiesResponse));
socket.emit('enemies', enemiesResponse);
var randomSpawnPoint = playerSpawnPoints[Math.floor(Math.random() * playerSpawnPoints.length)];
currentPlayer = {
name:data.name,
position: randomSpawnPoint.position,
rotation: randomSpawnPoint.rotation,
health: 100
};
clients.push(currentPlayer);
// in your current game, tell you that you have joined
console.log(currentPlayer.name+' emit: play: '+JSON.stringify(currentPlayer));
socket.emit('play', currentPlayer);
// in your current game, we need to tell the other players about you.
socket.broadcast.emit('other player connected', currentPlayer);
});
socket.on('player move', function(data) {
console.log('recv: move: '+JSON.stringify(data));
currentPlayer.position = data.position;
socket.broadcast.emit('player move', currentPlayer);
});
socket.on('player turn', function(data) {
console.log('recv: turn: '+JSON.stringify(data));
currentPlayer.rotation = data.rotation;
socket.broadcast.emit('player turn', currentPlayer);
});
socket.on('player shoot', function() {
console.log(currentPlayer.name+' recv: shoot');
var data = {
name: currentPlayer.name
};
console.log(currentPlayer.name+' bcst: shoot: '+JSON.stringify(data));
socket.emit('player shoot', data);
socket.broadcast.emit('player shoot', data);
});
socket.on('health', function(data) {
console.log(currentPlayer.name+' recv: health: '+JSON.stringify(data));
// only change the health once, we can do this by checking the originating player
if(data.from === currentPlayer.name) {
var indexDamaged = 0;
if(!data.isEnemy) {
clients = clients.map(function(client, index) {
if(client.name === data.name) {
indexDamaged = index;
client.health -= data.healthChange;
}
return client;
});
} else {
enemies = enemies.map(function(enemy, index) {
if(enemy.name === data.name) {
indexDamaged = index;
enemy.health -= data.healthChange;
}
return enemy;
});
}
var response = {
name: (!data.isEnemy) ? clients[indexDamaged].name : enemies[indexDamaged].name,
health: (!data.isEnemy) ? clients[indexDamaged].health : enemies[indexDamaged].health
};
console.log(currentPlayer.name+' bcst: health: '+JSON.stringify(response));
socket.emit('health', response);
socket.broadcast.emit('health', response);
}
});
socket.on('disconnect', function() {
console.log(currentPlayer.name+' recv: disconnect '+currentPlayer.name);
socket.broadcast.emit('other player disconnected', currentPlayer);
console.log(currentPlayer.name+' bcst: other player disconnected '+JSON.stringify(currentPlayer));
for(var i=0; i<clients.length; i++) {
if(clients[i].name === currentPlayer.name) {
clients.splice(i,1);
}
}
});
});
console.log('--- server is running ...');
function guid() {
function s4() {
return Math.floor((1+Math.random()) * 0x10000).toString(16).substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
}
Ma question c'est : Comment faire pour que chaque personne qui lance mon jeu et qui se connecte aient leur propre vue fps (derrière leur perso).
Mon problème : Dès que quelqu'un se connecte (en local) les deux voient a travers 1 camera... compliqué a expliquer...
Sujet déplacé
Les balises code SVP
Merci de lire la Netiquette.
Re: [DB-RS] Jeux Socket - problème de camera
Bonjour,
en regardant très vite fais tout ça, je pense qu'il faut que tu ajoute un petit truc sur un script attaché a ton prefab de joueur, qui désactivera la caméra attaché a celui ci si ce n'est pas notre joueur.
Ça ressemblerait (de mémoire) a quelque chose comme ça:
(Normalement ça marche, mais je suis sur téléphone donc je peux pas tester)
en regardant très vite fais tout ça, je pense qu'il faut que tu ajoute un petit truc sur un script attaché a ton prefab de joueur, qui désactivera la caméra attaché a celui ci si ce n'est pas notre joueur.
Ça ressemblerait (de mémoire) a quelque chose comme ça:
Code : Tout sélectionner
if(!isMine){
this.getComponent("Camera").isEnabled = false;
}
Ne disons pas que ça fonctionne, disons que nous n'avons pas trouvé de dysfonctionnement.