0
所以我在三個js中構建了一個遊戲,並試圖通過socket.io使它成爲多人遊戲,所以我將所有的角色都加載到我的服務器上的一個叫做玩家的數組中側儘管代碼可以工作,但變量還沒有定義
,然後我把它傳遞給每一個客戶端連接時,像這樣
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)
})
和我的客戶syncPlayers看起來像這樣
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)
}
});
})
那麼CA LLS這至極向服務器發送數據
function loadPlayerdata(playerName) {
console.log(playerName)
console.log("phase1")
socket.emit('loadPlayerdata', playerName)
}
那麼這就是所謂的,它檢索到的玩家名稱和球員的位置,這是是我的問題的數據在於
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)
}
我不斷收到Uncaught TypeError: Cannot read property 'position' of undefined
即使我可以用這個
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對象
var threeObjects = {};
有人可以解釋爲什麼它不會工作,以及如何解決它
我代替我與你的功能,遺憾的是它沒有工作? –