处理js跳转系统

时间:2016-02-15 12:13:46

标签: javascript processing processing.js

我试图在processing.js中完成跳转系统并完成它,但不是我想要的。事情就是这样,跳跃高度取决于按下按键的时间长度。无论按下按键的时间长短,我想要的是相同的高度。

这是我的代码:

var keys = [];
void keyPressed() {
    keys[keyCode] = true;
};
void keyReleased() {
    keys[keyCode] = false;
};

var Player = function(x, y) {
    this.x = x;
    this.y = y;
    this.g = 0;
    this.vel = 2;
    this.jumpForce = 7;
    this.jump = false;
};
Player.prototype.draw = function() {
    fill(255,0,0);
    noStroke();
    rect(this.x, this.y, 20, 20);
};
Player.prototype.move = function() {
    if(this.y < ground.y) {
        this.y += this.g;
        this.g += 0.5;
        this.jump = false;
    }
    if(keys[RIGHT]) {
        this.x += this.vel;
    }
    if(keys[LEFT]) {
        this.x -= this.vel;
    }

    //preparing to jump
    if(keys[UP] && !this.jump) {
        this.jump = true;
    }
    // if jump is true, than the ball jumps... after, the gravity takes place pulling the ball down...
    if(this.jump) {
        this.y -= this.jumpForce;
    }
};
Player.prototype.checkHits = function() {
    if(this.y+20 > ground.y) {
        this.g = 0;
        this.y = ground.y-20;
        jump = false;
    }
};

Var Ground = function(x, y, label) {
    this.x = x;
    this.y = y;this.label = label;
};
Ground.prototype.draw = function() {
    fill(0);
    rect(0, 580, width, 20);
};

var player = new Player(width/2, height/2);
var ground = new Ground(0, 580, "g");
void draw() {
    background(255,255,255);
    player.draw();
    player.move();
    player.checkHits();
    ground.draw();
}

任何帮助都会受到重视。

1 个答案:

答案 0 :(得分:0)

你在这里做的是:&#34;如果这个(玩家)不接触地面,那么,如果(另外)按下按键,跳跃!&#34;。因此即使他在空中也会让玩家跳跃......增加跳跃高度

你应该做类似的事情:&#34;如果玩家触地,允许跳跃(如果按下按键),否则你已经跳了!&#34;。

这样的事情:

if(this.y < ground.y) {
    this.y += this.g;
    this.g += 0.5;
    this.jump = true;
}
else{
    this.jump = false;
}

if(keys[UP] && !this.jump) {
    this.jump = true;
    this.y -= this.jumpForce;
}