Как удалить объект из массива при попадании в другой объект в деле .js? - PullRequest
0 голосов
/ 27 апреля 2019

У меня проблемы с удалением объекта при попадании в него другого объекта в деле .js.Я делал это с пересекающимися объектами, но это не работает для меня в деле.Должен ли я использовать границы?

Это злая игра с птицами, и у меня есть мяч с мышью и принуждением, которое действует как рогатка.Когда я отпускаю мяч, и мяч попадает в цель, я хочу, чтобы цель была удалена.Я пробовал пересекать объекты и использовать сплайс, но я думаю, что это не работает в файле ввода.js и может использовать другое решение.

class Targets {
  constructor(x, y, r) {
    this.body = Matter.Bodies.circle(x, y, r);
    Matter.Body.setMass(this.body, this.body.mass * 4);
    Matter.World.add(world, this.body);
    this.x=x
    this.y=y
    this.r = r;

  }
  show() {
    var pos = this.body.position;
    var angle = this.body.angle;
    push();
    translate(pos.x, pos.y);
    rotate(angle);
    imageMode(CENTER);
    image(dotImg, 0, 0, this.r * 2, this.r * 2);
    pop();
  }

    hits(other) {
    var d = dist(this.x, this.y, other.x, other.y);
    if (d < this.r + other.r) {
      return true;
    } else {
      return false;
    }
  }
}

class Bird {
  constructor(x, y, r) {
    var options = {
      restitution: 0.2
    }

    this.body = Matter.Bodies.circle(x, y, r, options);
    Matter.Body.setMass(this.body, this.body.mass * 4);
    Matter.World.add(world, this.body);
    this.x=x
    this.y=y
    this.r = r;
  }
  grow() {
    this.r = this.r + 2;
  }

  show() {
    var pos = this.body.position;
    var angle = this.body.angle;
    push();
    translate(pos.x, pos.y);
    rotate(angle);
    imageMode(CENTER);
    image(dotImg, 0, 0, this.r * 2, this.r * 2);
    pop();
  }
}

for (var i = 0; i < 4; i++) {
    target[i] = new Targets(width / 1.5, height - i * 75, 25);
  }

  balls = new Bird(width / 4, height / 2, 25);
Draw(){
    background(bkgImg);
    Matter.Engine.update(engine);
    balls.show()
    for (var i = 0; i < balls.length; i++) {
      balls[i].show();
      for (var j = 0; j < target.length; j++) {
        if (balls[i].hits(target[j])) {
          target[j].splice(i,1);
        }
      }
    }
    for ( i = 0; i < target.length; i++) {
    target[i].show();
    }
}

Я ожидаю, что цель исчезнет/ быть сращенным, чтобы мяч не отскочил от цели.

...