我试着用html5画布做一个原始的超级马里奥游戏的拷贝,只是为了好玩,为了了解更多关于画布工具和它的动画,但是我被困在让马里奥做它的跳跃这里是我的小提琴:http://jsfiddle.net/2tLCk/1/
我应该如何修复我的up函数,使马里奥跳转,回到地面,就像在这个网站上,http://blog.nihilogic.dk/,我试图理解它的代码,但我不能?
if (keydown.up) {
vy += gravity;
character.CurentPos = 11;
character.x += character.speed;
character.y += vy;
}发布于 2014-01-21 07:22:59
这是一个跳马里奥http://jsfiddle.net/2tLCk/22/。
如果跳跃是1-上升。如果跳跃是2-下降。
if(jumping){
if(jumping == 1) {
if(character.y > 140) character.y -= gravity;
else jumping = 2;
} else if(jumping == 2) {
if(character.y < 184) character.y += gravity;
else{
character.y = 184;
jumping = false;
character.CurentPos = 6;
}
}
}else if(keydown.up) {
jumping = 1;
character.CurentPos = 11;
}您可能希望使用这个https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame而不是setInterval()。
发布于 2014-01-18 13:07:49
你基本上希望重力总是活跃的,而不仅仅是在按下键的时候。跳(键)时,你必须加到常春藤上。如下所示:
if(keydown.up) {
vy += -2;
}
vy += gravity;
if(character.y > 184) { // simple collision detection for ground floor
vy = 0;
character.y = 184;
}
//character.CurentPos = 11;
//character.x += character.speed;
character.y += vy;请参阅http://jsfiddle.net/pjQb3/
发布于 2014-01-21 02:00:29
我会这样做:
// Global forces
character.vy += gravity;
// User input
if (keydown.up) {
character.vy += -2;
}
// Final location
if (character.y + character.vy >= 184) {
// Update player location.
character.y += character.vy;
} else {
// Player was about to move past ground so place player directly on ground
// and reset velocity.
character.y = 184;
character.vy = 0;
}https://stackoverflow.com/questions/21204001
复制相似问题