2016-04-26 230 views
0

我希望我能够得到一些帮助,解决我现在遇到的问题。Phaser P2碰撞杀死碰撞精灵

基本上我有一些子弹,然后我有一群敌人随速度移动。敌人有不同的精灵,基本上我想为每个精灵类型分配一个值。例如,如果我说如果生成一颗钻石并与子弹相撞就会得到10点,但这种奇怪的行为是在它发生碰撞时发生的,因为屏幕上的所有敌人都会给予10点并且它们全部被破坏,而不仅仅是唯一的那个。

此外,如果10点精灵不在屏幕上,没有给出的点是正常的。

请在下面找到我的代码,我将不胜感激任何帮助。谢谢。

//here is my bullets group 
createBullets: function(){ 
    //Bullets 
    this.bullets = this.add.group(); 
    this.bullets.enableBody = true; 
    this.bullets.physicsBodyType = Phaser.Physics.P2JS; 
    this.bullets.createMultiple(500, 'bullet', 0, false); 
    this.bullets.setAll('anchor.x', 0.5); 
    this.bullets.setAll('anchor.y', 0.5); 
    this.bullets.setAll('outOfBoundsKill', true); 
    this.bullets.setAll('checkWorldBounds', true);  
}, 

///here are my enemies 
addOneFigura: function(x, y) { 
    this.figuras = this.add.group(); 
    //these are sprites 
    this.figuritas = ["figura1","figura2","figura3","figura4","figura5","figura6"]; 
    this.figurita = this.figuritas[Math.floor(Math.random()*6)]; 
    this.figura = this.add.sprite(x,y,this.figurita); 
    this.figuras.add(this.figura); 
    this.physics.p2.enable(this.figura, false); 
    this.figura.body.velocity.y = 75; 
    this.figura.checkWorldBounds = true; 
    this.figura.outOfBoundsKill = true; 

    this.figura.body.setCollisionGroup(this.figurasCG); 
    this.figura.body.collides(this.bulletsCG, this.collisionBulletMatch, this); 
}, 

//and lastly this is my collision function 
collisionBulletMatch: function(figurita, figuritapega) { 

    if (this.figurita != this.figuritapega){ 
     this.score += 10; 
     this.scoreText.text = this.score; 
     this.resetFigura(); 
    } 
} 

所以基本上,当他们碰撞了整个figuras组中消失,而不只是一个碰撞。

+0

你的'resetFigura'函数是什么样的? –

+0

看起来像那样:resetFigura:function(figura){ this.figura.kill(this.figura); },谢谢你的回复 – Rafahc

回答

1

我很乐意承认我没有在Phaser的P2物理方面做过很多工作,但是想到的是当你打电话给resetFigura时,你没有传递一个数字(figura)。如果没有看到变量的初始化我不能肯定,但我想你想你的功能更改为类似如下:

resetFigura: function(figura) { 
    figura.sprite.kill(); 
}, 

这应该通过this.resetFigura(figuritapega);collisionBulletMatch被调用。

如果它不在resetFigura呼叫,我也建议看看official P2 Physics collision group example;我能够很快完成并运行。它确实有一个玩家角色,但是如果你将你的子弹简化为一个,你可能会发现你的问题。

+0

嘿詹姆斯我发现了一些东西,它只会在组合的速度值出现之前破坏组合,所以如果碰撞发生在像素74中,那么整个组合会被破坏,好,这是正常的。 – Rafahc

+0

嗯,不,看起来不正常。嗯。 –

+0

它没有真正的帮助,但我重新发表我错了问题请选择我的新帖子,这样你就可以看到发生了什么。 http://stackoverflow.com/questions/37063445/phaser-collision-weird-behavior – Rafahc