如何用相位器双跳

时间:2014-03-26 16:12:32

标签: javascript html5 game-engine phaser-framework

我想知道如何使用移相器进行双跳。

this.jumpCount = 0;
this.jumpkey = game.input.keyboard.addKey(Phaser.Keyboard.UP);
this.jumpkey.onDown.add(jumpCheck, this); 

jumpCheck = function(){
   if (player.jumpCount < 2){
      player.jump();
      player.jumpCount ++;
   }
}

我已经尝试过了,但它没有用,我也不太明白this.这个词的含义。

编辑:好的,我一直试图自己解决这个问题,但我不知道该怎么办。

这是我的新代码。它可以双跳,但我的玩家可以&#34;飞&#34;有三倍,四倍等跳跃,我真的不知道为什么。 你能帮帮我吗?

//jump
    var jumpCount = 0;
    var jumpKey = game.input.keyboard.addKey(Phaser.Keyboard.UP);
    jumpKey.onDown.add(jumpCheck);

    function jumpCheck() {
        if((jumpCount < 1) && (player.body.touching.down)){
            jump1();
            console.log("jumpCount =" + jumpCount);
            console.log("Vitesse ="+ player.body.velocity.y);
            //  attention, remettre jumpCount à zéro si on touche le sol
//          if(player.body.touching.down){
//              jumpCount = 0;
//          }
        }

    //double jump
        if((jumpCount < 2) && (!player.body.touching.down)){
            jump2();
            console.log("jumpCount =" + jumpCount);
            console.log("Vitesse ="+ player.body.velocity.y);

        }

    }

    function jump1(){
        console.log("jump1");
        jumpCount ++;
        player.body.velocity.y = -250;
    }

    function jump2(){
        console.log("jump2");
        jumpCount ++;
        player.body.velocity.y = -150;

    }

chrome控制台总是向我发送jumpCount = 1。

2 个答案:

答案 0 :(得分:0)

如果您没有将函数称为函数或将var置于其前面,则不会真正创建函数。这意味着你至少可以改变它:

var jumpCheck = function() { /*jumping code*/ };

然后解释'这个'。 '这个'有点难以解释,通过使用它来开始理解它更容易。它在您的情况下(和大多数情况下)引用对象内的变量。假设我们有这个代码:

var x, y;

function Location(x, y) {
   this.x = x;
   this.y = y;
};

我刚刚创建的是两个全局变量和一个函数,我们可以使用它们简单地变成一个对象:

var point = new Location(100, 100);

//and I will change the global variables as well.
x = 200; y = 150;

这就是显示的地方,我想改变点的x。但是,我们刚刚更改了全局x,那么怎么做呢?很简单,通过从对象内部调用它,这确保它只在该对象内部发生变化。

point.x = 150;

//this makes sure that x = 200; point.x = 150;

如果我要制作更多的物品

var point2 = new Location(300, 200);

不更改点对象内的变量x。 那么在你的例子中它做了什么?它将jumpCount绑定到播放器对象,这意味着它只能通过专门调用player.jumpCount来更改。正如我所说,这很难理解,但至少应该确保你知道这个的基础知识。

答案 1 :(得分:0)

以下是Double Jump

的示例程序