相位定时器不改变位置对象,只改变位置值

Phaser timer don't change position object, only value of position

本文关键字:位置 改变 对象 定时器      更新时间:2023-09-26

我正在使用Phaser创造一款游戏。当用户按下箭头时,我想改变角色的物理大小,然后在1秒后返回大小。

我写的代码可以工作,但是角色从屏幕上掉下来,因为他在一个对象中。所以我需要把他拉上来,改变物理尺寸。

使用下面的代码

else if (this.cursors.down.isDown) {
    this.jim.body.setSize(226, 150, 0, 0);
    this.timerCrouch= this.game.time.events.add(Phaser.Timer.SECOND * 1.25, jimСrouch, this);
    this.timerCrouch.timer.start();
}
function jimСrouch() {  
    this.jim.body.setSize(226, 285, 0, 0);
    this.jim.body.y = this.jim.body.y + 150;
};

字符不拉起,但在jim.body.y的日志值变化,并返回到之前。

如何解决这个问题?谢谢你!

我认为这可能是因为this.cursors.down.isDown。我认为这在语法上是不正确的,因为down.isDown是多余的。

在我的游戏中,我使用game.input.onDown.add(functionName);,它工作得很好。