Следуя изложенной в моих комментариях аргументации, ваш код может быть изменен на следующий, чтобы помочь вам решить эту проблему:
// Player Class
function Player(id)
{
this.id = id;
this.canshot = false;
this.bullets = [];
this.fireRate = 100; // whatever
|
// Bullet class
function Bullet(player, xV,yV,x,y)
{
this.player = player;
this.xV = xV;
this.yV = yV;
this.x = x;
this.y = y;
}
// other code
socket.on('shoot', function(data){
if(player.canshot){
console.log("FIre")
player.canshot = false
var bullet = new Bullet(player, data.xVel, data.yVel, data.x, data.y);
player.bullets.push(bullet);
time = 1000/player.fireRate
setTimeout(() => {
player.canshot = true;
}, time);
}
});
Теперь каждая пуля может обрабатываться самостоятельно.поскольку он знает, к какому игроку он привязан, и вы можете избежать всего этого вложения игроков и пуль