Also ich baue ein Spiel in drei js und versuche, es multiplayer durch socket.io zu machen, so dass ich alle meine Charaktere in ein Array namens Spieler auf meinem Server geladen werde SeiteVariable wird nicht definiert, obwohl der Code funktioniert woanders
und dann i übergeben es an jeden Kunden, wenn sie wie so
socket.on('addPlayer', function(username) {
players.push(username)
console.log(username + " joined")
console.log("online Users " + players)
socket.broadcast.emit('syncPlayers', players)
socket.emit('syncPlayers', players)
})
und auf meinem Client syncPlayers verbinden wie folgt aussieht
socket.on('syncPlayers', function(players) {
players.forEach(function(value) {
if (value == username) {
console.log("not adding " + value + " thats you ")
loadPlayerdata(username)
} else {
console.log("player Online " + value);
newplayer = value;
loadPlayerdata(newplayer)
addPlayer(newplayer)
}
});
})
dann ca lls diese wich sendet die Serverdaten
function loadPlayerdata(playerName) {
console.log(playerName)
console.log("phase1")
socket.emit('loadPlayerdata', playerName)
}
dann diese aufgerufen wird, und sie abgerufen der Spielername und die Daten der Spieler Lage dies waren mein Problem liegt
socket.on('loadPlayerdata', function(data, username) {
toMove = threeObjects[username + "Char"]
if (data == "null" || "") {
console.log(username + " is new")
} else {
console.log(username + " Exists")
console.log(toMove)
toMove.position.set(world.spawnPointx, world.spawnPointy, world.spawnPointz)
}
Ich erhalte Uncaught TypeError: Cannot read property 'position' of undefined
obwohl kann ich dieses verwenden
function addPlayer(playerName) {
var charObjectName = playerName + "Char"
var threeObject = models.tent1.mesh.clone();
scene.add(threeObject)
//threeObject.position.set(world.spawnPointx, world.spawnPointy, world.spawnPointz)
// set reference
threeObjects[charObjectName] = threeObject;
}
btw ih ave ein Objekt
var threeObjects = {};
kann jemand bitte erklären, warum wird nicht funktioniert und wie man es beheben
ich meine Funktion mit Ihnen ersetzt und leider didnt es? –