尝试在canvas / JS中动画一个跳跃
Trying to animate a jump in canvas / JS
我只是想在画布上动画一个跳跃,但我不认为我得到了正确的数学公式,而不是做一个正弦波的运动,它只是瞬间传送,没有动画,任何帮助将是伟大的感谢。
var ctx = new CtxScene(500, 500, '1px solid black').create()
, player = {
x: 0,
y: 0,
moving: false,
dir: undefined
};
var i = 0;
(function draw() {
setTimeout(function() {
requestAnimationFrame(draw);
checkDir();
update();
}, 1000 / 60);
})();
document.onkeydown = function(e) {
if (e.which === 37) {
player.moving = true;
player.dir = 'left';
}
if (e.which === 39) {
player.moving = true;
player.dir = 'right';
}
if (e.which === 38) {
player.moving = true;
player.dir = 'up';
}
if (e.which === 40) {
player.moving = true;
player.dir = 'down';
}
if (e.which === 32) {
player.moving = true;
player.dir = 'jump';
}
console.log(e.which);
}
document.onkeyup = function(e) {
player.moving = false;
}
function update() {
ctx.clearRect(0, 0, 500, 500);
ctx.fillStyle = '#00A';
ctx.fillRect(player.x, player.y, 100, 100)
}
function checkDir() {
if (player.moving) {
if (player.dir === 'left') {
player.x -=5;
} else if (player.dir === 'right') {
player.x += 5;
} else if (player.dir === 'up') {
player.y -= 5;
} else if (player.dir === 'down') {
player.y += 5;
} else if (player.dir === 'jump') {
player.y = 100 * Math.sin(5*Math.PI/200);
}
}
}
数学是从底部开始的几行(我几乎100%肯定它是错误的)
最简单的方法就是使用物理,非常非常基础的物理。给你的角色一个重力和至少一个Y方向的速度,类似于:
player.gravity= 0.92;
var characterUpdate= function(){
player.y+=player.velocityY;
player.velocityY+=player.gravity;
}
这将导致玩家不断想要向下(重力),而你在跳跃过程中增加速度y来对抗这种行为。您需要设置一些边界以避免字符暂时离开屏幕,例如:
if (player.y+player.height >= ctx.height) {
player.y=ctx.height-player.height;
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 浮动元素在隐藏另一个浮动元素时会跳跃
- 滑翔JS跳跃返回“移动”.Substr不是一个函数
- 尝试在canvas / JS中动画一个跳跃
- 引导崩溃有一个跳跃的过渡
- jQuery设置一个粘贴者跳跃的动画(先设置顶部动画,然后设置底部动画)
- 另一个jQuery Quicksand跳跃过渡
- 我如何“跳跃”?到一个特定的元素