当被something.js中的另一个对象击中时,如何从数组中删除一个对象?

时间:2019-04-27 13:01:51

标签: javascript arrays class p5.js matter.js

当我在something.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();
    }
}

我希望目标消失/不被接缝,以免球从目标反弹。

0 个答案:

没有答案