ObjectA внутри ListA, ListA внутри ObjectB, ObjectB внутри ListC - PullRequest
0 голосов
/ 30 марта 2019

Я создаю игру socket.io, и хранение данных маркера становится проблемой для меня. Как поместить объект маркера внутри списка объекта маркера, который находится внутри объекта, который находится внутри списка всех основных объектов.

Код сервера:

var Player = function(id) {
   var self = {
   canshot: false,
   bullets: []
   }
}
socket.on('shoot', function(data){
   if(player.canshot){
      console.log("FIre")
      player.canshot = false
      player.bullets.push({
        xV:data.xVel,
        yV:data.yVel,
        x:data.x,
        y:data.y
      });
      time = 1000/player.fireRate
      setTimeout(() => {
         player.canshot = true;
      }, time);
    }
 });
//Sends data in loop
   bullets:player.bullets,
   canshot:player.canshot

Код клиента:

///When client recieves server info,

**ctx.fillText(player[i].bullets[data[i].bullets.length],10,20)**

Если вы хотите увидеть весь код, вы можете увидеть его здесь: https://repl.it/@Helixable/FireAway

1 Ответ

0 голосов
/ 30 марта 2019

Следуя изложенной в моих комментариях аргументации, ваш код может быть изменен на следующий, чтобы помочь вам решить эту проблему:

// 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);
    }
 });

Теперь каждая пуля может обрабатываться самостоятельно.поскольку он знает, к какому игроку он привязан, и вы можете избежать всего этого вложения игроков и пуль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...