P2 物理体在 setRectangle() 调用 phaserJS 后没有发生碰撞
P2 physics body not colliding after setRectangle() called phaserJS
我正在创建鱼精灵。与 foodCollisionGroup 发生碰撞。鱼吃一些食物。玩游戏效果很好。之后我调整它的大小(增加鱼的大小)并且它停止与食物碰撞。
我认为它可能不会因为调用了 setRectangle 而与食物发生碰撞。
我有另一个问题,即 fishFoodCount 增加了两次。
如何解决这两个问题
Fish.prototype.create = function(x, y){
this.fish = game.add.sprite(x, y, this.spriteName);
this.fish.physicsBodyType = Phaser.Physics.P2JS;
game.physics.p2.enable(this.fish);
this.fish.enableBody = true;
this.fish.anchor.setTo(0.5,0.5);
this.fish.body.collideWorldBounds = true;
this.fish.animations.add('idle', [3 + (this.index * 8)], 10, false);
this.fish.animations.add('move', this.getAnimationFramesArrayFor(this.index) , this.AnimationFrameRate, true);
this.fish.play('idle');
this.fish.body.fixedRotation = true;
}
-------
Fish.prototype.setFishSize = function(width, height){
this.fish.width = width;
this.fish.height = height;
this.fish.body.setRectangle(height/2, width/1.8, width/3.3, 0);
}
-------
Fish.prototype.eatFood = function(fish, food) {
if(this.fishFoodCount > 9){
this.setFishSize(game.width/25, game.height/4);
}
this.fishFoodCount += 1;
food.sprite.kill();
}
使用setRectangle()
后需要重新申请碰撞组。
我正在创建鱼精灵。与 foodCollisionGroup 发生碰撞。鱼吃一些食物。玩游戏效果很好。之后我调整它的大小(增加鱼的大小)并且它停止与食物碰撞。 我认为它可能不会因为调用了 setRectangle 而与食物发生碰撞。 我有另一个问题,即 fishFoodCount 增加了两次。 如何解决这两个问题
Fish.prototype.create = function(x, y){
this.fish = game.add.sprite(x, y, this.spriteName);
this.fish.physicsBodyType = Phaser.Physics.P2JS;
game.physics.p2.enable(this.fish);
this.fish.enableBody = true;
this.fish.anchor.setTo(0.5,0.5);
this.fish.body.collideWorldBounds = true;
this.fish.animations.add('idle', [3 + (this.index * 8)], 10, false);
this.fish.animations.add('move', this.getAnimationFramesArrayFor(this.index) , this.AnimationFrameRate, true);
this.fish.play('idle');
this.fish.body.fixedRotation = true;
}
-------
Fish.prototype.setFishSize = function(width, height){
this.fish.width = width;
this.fish.height = height;
this.fish.body.setRectangle(height/2, width/1.8, width/3.3, 0);
}
-------
Fish.prototype.eatFood = function(fish, food) {
if(this.fishFoodCount > 9){
this.setFishSize(game.width/25, game.height/4);
}
this.fishFoodCount += 1;
food.sprite.kill();
}
使用setRectangle()
后需要重新申请碰撞组。