javascript - 仅使用 JavaScript 创建跳跃动画

标签 javascript animation

我不知道为什么我的代码不允许我正确跳转。 我可以很好地左右移动,但是当我尝试使用向上箭头跳跃时,它会将我带到一个随机高度,并且我不会再跌倒。

我正在尝试构建一个平台游戏并记下所需的基本代码。

这是我的 JavaScript:

var canvas = document.getElementById("mainCanvas");
var context = canvas.getContext("2d");

var keys =[];

var width = 500,
    height = 400,
    speed = 4,
    jumpHeight = 10,
    gravity = 10.0,
    velocity = null;

var player= {
    x:0,
    y:380,
    width:20,
    height:20,
    speed:4,
    velX:0,
    velY:0,
    jumpBoo:false,
};


window.addEventListener("keydown", function(e){
    keys[e.keyCode] = true;
}, false);
window.addEventListener("keyup", function(e){
    delete keys[e.keyCode];
}, false);

/*
    keys
    up-38
    down-40
    right-39
    left-37
*/
function game(){
    update();
    render();
}
function jump(){
    if(keys[38]){
        if(player.y=250){
            player.y+=speed*5;
        }
        if(player.y<250){
            player.y-=speed*3;
        }
    }
}
function update(){
    jump();
    if(keys[37]) player.x-=speed;
    if(keys[39]) player.x+=speed;

    if(player.x <0) player.x=0;
    if(player.y <0) player.y=0;
    if(player.x >= width - player.width) player.x = width - player.width;
    if(player.y >= height - player.height) player.y = height - player.height;
    if(player.y >= height-player.height){
        player.y = height - player.height;
    }
}
function render(){
    context.clearRect(0,0,width,height);
    context.fillRect(player.x, player.y, player.width, player.height);
}
setInterval(function(){
    game();
}, 1000/30);

我的 HTML:

<html>
    <head>
        <meta charset="UTF-8"/>
        <title>Game</title>
        <link rel="stylesheet" type="text/css" href="style.css"/>
    </head>
    <body>
        <canvas id="mainCanvas" width="500" height="400"></canvas>
        <script type="text/javascript" src="script.js"></script>
    </body>
</html>

还有我的 CSS:

#mainCanvas{
    background-color: #bcbcbc;
}

最佳答案

您的跳转功能存在一些问题。

而不是 if(player.y=250){你应该使用if(player.y==250){

还有,逻辑有问题,要减小y的值当用户按键时向上,并增加 y 的值当用户没有按下按键返回时,如下所示:

function jump(){
    if(keys[38]){
        if(player.y>250){
            player.y-=speed*3;
        }
    } else if(player.y<380){
        player.y+=speed*5;
    }
}

关于javascript - 仅使用 JavaScript 创建跳跃动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33067670/

相关文章:

javascript - 在嵌套对象数组中查找父对象。如何?

Javascript:如何修改我的代码以在主题发布后添加回消失的占位符

javascript - 通过Ajax表单发送数据

c# - 新手 WPF 动画 : How to begin the Animation?

javascript - 如何在另一个打字动画完成后执行打字动画

javascript - 如何使用 Raphael 将移动的圆圈动画化为更大的圆圈?

ios - 动画 UICollectionViewCell 时 bounds.size 和 frame.size 之间的相关性是什么

iOS:表格重新加载改变布局

javascript - 在 Dreamweaver 中的何处编写自定义 Jquery 代码

javascript - 将原型(prototype)方法传递给 Promise 的 then 方法