2

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

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.代表什么。

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

这是我的新代码。它可以双跳,但我的球员可以用三、四等跳“飞”,我真的不知道为什么。你可以帮帮我吗 ?

//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。

4

2 回答 2

0

如果您没有将它称为函数或将 var 放在它前面,那么您实际上并没有创建一个函数。这意味着您至少可以将其更改为:

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

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

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 来更改。正如我所说,这很难理解,但这至少应该确保你了解它的基础知识。

于 2014-03-26T16:28:02.460 回答
0

这是双跳的示例程序

于 2015-08-18T11:39:11.810 回答