【问题标题】:How to kill a Weapon bullet that hit an enemy? Phaser 2.7.5如何杀死击中敌人的武器子弹?移相器 2.7.5
【发布时间】:2019-06-21 01:15:05
【问题描述】:

大家好,我正在制作这个简单的游戏,其中包含两个玩家在一个竞技场中 每个玩家都有一个发射射弹的武器。 我想要的是,每次弹丸击中一个方块或敌人时,它的生命值减少1并且碰到敌人或方块的子弹消失。

我尝试使用 Lifespan 杀死子弹(当子弹与敌人重叠时,lifespan = 0)但没有成功。 我正在使用bullet.kill(),但它似乎也不起作用。

我是如何制作武器的:

weapon = game.add.weapon(10, 'bullet');
weapon.bulletKillType = Phaser.Weapon.KILL_WORLD_BOUNDS;  weapon.bulletSpeed = 200;
weapon.fireRate = 1000;
weapon.trackSprite(this.player, 0, 0, false);

weapon2 = game.add.weapon(10, 'bullet');
weapon2.bulletKillType = Phaser.Weapon.KILL_WORLD_BOUNDS;
weapon2.bulletSpeed = 200;
weapon2.fireRate = 1000;
weapon2.trackSprite(this.player2, 0, 0, false);

碰撞:

game.physics.arcade.overlap(weapon.bullets, this.player2, this.hitP2, null, this);
game.physics.arcade.overlap(weapon.bullets, this.blocks, this.hitBlock1, null, this);

game.physics.arcade.overlap(weapon2.bullets, this.player, this.hitP1, null, this);
game.physics.arcade.overlap(weapon2.bullets, this.blocks, this.hitBlock2, null, this);

命中函数:

hitBlock: function(bul, blk){

        bul.kill();
},

hitP: function(bul, enm){

        // sfx de acerto

        p1HP -= 1;

        this.txtP1HP.text = 'P1 HP: ' + p1HP;

        bul.kill();

        if(p1HP < 1){

            this.player.kill();
}, this);

现在发生的情况是,当子弹击中敌人时,他会变得隐形,而子弹仍在运行,直到出界。

为什么 kill 方法在这个中不能正常工作? 为什么敌人会隐形?

【问题讨论】:

    标签: javascript phaser-framework


    【解决方案1】:

    我不知道 Phaser,但我很感兴趣,所以,通过检查 the overlap docs 它指出:

    这两个对象将按照您指定它们的顺序传递给此函数,除非您检查的是 Group vs. Sprite,在这种情况下,Sprite 将始终是第一个参数。

    您显然声明与一个组重叠,因此您需要交换参数,精灵将始终是第一个参数。玩家消失了,因为你杀死了它而不是子弹:

    hitBlock: function(blk, bul){ //instead of (bul, blk)
    
        bul.kill();
    
    },
    
    hitP: function(enm, bul){ //instead of (bul, enm)
    
        // sfx de acerto
    
        p1HP -= 1;
    
        this.txtP1HP.text = 'P1 HP: ' + p1HP;
    
        bul.kill();
    
        if(p1HP < 1){
            this.player.kill();
        }
    
    }
    

    我不确定它是否会有效地杀死子弹,因为第二个参数可能是子弹组,而不是有效重叠的组。

    希望有帮助!

    【讨论】:

    • 伙计,你救了我。我在文档中没有看到这个实现细节。它完全解决了我的问题,谢谢!
    • 不客气,总是乐于助人!这个框架看起来很有趣
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多