Phaser3旋转动画

时间:2018-06-16 10:53:01

标签: javascript animation phaser-framework

我试图创建一个摆动来回摆动的简单动画效果。我只使用一个图像精灵,我已经得到了下面的代码,但动画只能倾斜45度然后完全停止。我可能做错了什么?

    var title = new Phaser.Scene("GameTitle");
var pendulum;
var direction;
title.create = function(){
    pendulum = this.add.sprite(200, 0, 'titlePendulum').setOrigin(0.5, 0).setScale(1.8).setRotation(79);
    direction = "left";
};

title.update = function(){
    console.log(pendulum.angle.toFixed(0));
    swing(direction);
    if(pendulum.angle.toFixed(0) == 71){
        swing ("right");
    }
    if(pendulum.angle.toFixed(0) == -76){
        swing("left");
    }
};

function swing(dir){
    if(dir == "left"){
        if(pendulum.angle.toFixed(0) == 71){
            swing("right");
        }else{
            pendulum.angle +=1.5;
        }

    }else{
        if(pendulum.angle.toFixed(0) > -80){
            pendulum.angle -= 1.5;
        }
        if(pendulum.angle.toFixed(0) == -76){
            swing("left");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我注意到您在两个单独的pendulum.angle语句中检查if是否大于或等于80。但是80不能被1.5整除,角度值可能为.. 76, 77.5, 79, 80.5 ..,条件pendulum.angle.toFixed(0) == 80永远不会为真。

此外,函数参数的名称为dir,但您需要检查direction

我很确定这是引起问题的原因。即使不是那样,在检查可能是一件事或另一件事的条件时,最好使用if-else(而不是使用两个单独的{{1})(更优雅,更“干净”) }语句。

因此将您的代码更改为以下内容:

if