首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >html5帆布内部的重力

html5帆布内部的重力
EN

Stack Overflow用户
提问于 2014-01-18 12:21:05
回答 3查看 1.8K关注 0票数 0

我试着用html5画布做一个原始的超级马里奥游戏的拷贝,只是为了好玩,为了了解更多关于画布工具和它的动画,但是我被困在让马里奥做它的跳跃这里是我的小提琴:http://jsfiddle.net/2tLCk/1/

我应该如何修复我的up函数,使马里奥跳转,回到地面,就像在这个网站上,http://blog.nihilogic.dk/,我试图理解它的代码,但我不能?

代码语言:javascript
复制
if (keydown.up) {

            vy += gravity;
            character.CurentPos = 11;
            character.x += character.speed;
            character.y += vy;

        }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-21 07:22:59

这是一个跳马里奥http://jsfiddle.net/2tLCk/22/

如果跳跃是1-上升。如果跳跃是2-下降。

代码语言:javascript
复制
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()。

票数 2
EN

Stack Overflow用户

发布于 2014-01-18 13:07:49

你基本上希望重力总是活跃的,而不仅仅是在按下键的时候。跳(键)时,你必须加到常春藤上。如下所示:

代码语言:javascript
复制
    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/

票数 1
EN

Stack Overflow用户

发布于 2014-01-21 02:00:29

我会这样做:

代码语言:javascript
复制
// 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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21204001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档