Phaser和边界框的问题在运行中调整大小

时间:2014-12-24 02:38:14

标签: phaser-framework

我是Phaser的新手,并且在调整精灵的Hitbox方面存在问题,尤其是碰撞。这是一个有点人为的例子来强调我所拥有的问题,而不是最佳实践等。

正如你在下面的例子中看到的,我有2个精灵,1个角色和1个敌人,它们都有边界框(用debug.spriteBounds(绿色)显示)。

enter image description here

当我攻击时,我将玩家的精灵更改为更大的精灵,特别是一个人用剑在短时间内砍刀。

enter image description here

正如你可以看到更改精灵时,边界框也会调整大小,所以剩下的就是让我检查是否发生了碰撞,这是我遇到问题的部分。

这是我的代码段

if (this.attackRight.justDown) {
                console.log('attacking');
                console.log('boundsBeforeAttack=', this.player._bounds);

                this.player.loadTexture('playerAttack', 0);

                this.g.time.events.add(Phaser.Timer.SECOND * 0.5, function () {
                    console.log('boundsduringattack=', this.player._bounds);
                    console.log('touchingright=', this.player.body.touching.right);
                }, this);


                this.g.time.events.add(Phaser.Timer.SECOND * 3.25, function () {
                    this.player.loadTexture('player', 0);
                }, this);
            }

以下是输出:

attacking
_player.js:95 boundsBeforeAttack= c.Rectangle {x: 856.0833333333328, y: 737.0416666666679, width: 32, height: 32, offset: function…}
_player.js:100 boundsduringattack= c.Rectangle {x: 828.3333333333328, y: 737.6944444444443, width: 87.5, height: 32, offset: function…}
_player.js:101 touchingright= false

正如您所看到的那样,边界越来越大,但这似乎并未得到尊重。我想让自己变得正确。

我尝试过的其他事情玩家.body.reset();似乎没有做任何事情,使用physics.arcade.collide和overlay方法也可以做同样的事情。

1 个答案:

答案 0 :(得分:1)

首先通过调用arcade.collidearcade.overlap来更新

debug.body。有关基础知识,请参阅http://phaser.io/examples/v2/arcade-physics/one-way-collision(忽略单向部分)。

给你的精灵物理团体并使用debug.spriteBounds(而不是gdata-version: 3.0)。