当我在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();
}
}
我希望目标消失/不被接缝,以免球从目标反弹。