【问题标题】:Why does my my gravity work in this?为什么我的重力在这里起作用?
【发布时间】:2010-07-23 16:15:19
【问题描述】:

http://davzy.com/gameA/

我想不出一个聪明的方法来获得重力。现在有了它,它会检测到角色结束的块,但它不会掉到那个块!

有没有更好的方法来做重力?我想在没有游戏库的情况下执行此操作。

【问题讨论】:

  • 你最好粘贴一些代码,而不是让黑客有机会下载你的文件并在那里搜索你不知道在哪里。
  • @OP 你在说什么?
  • 我需要一种方法来为我的游戏添加重力,我不知道怎么做!
  • 如果你假装这个问题不是关于编程的,那就太搞笑了。有没有更好的方法来做重力?有吗?!

标签: javascript physics gravity


【解决方案1】:

我不知道你所说的“获得重力”是什么意思;你的问题不清楚。我假设如果你能检测到块何时结束,你可以使用以下公式:

s(t) = ut + 1/2at2

其中s 是时间t 的距离,u 是初始速度(在您的情况下为零),a 是加速度(在地球上这是 9.8m/s2)。本质上,您将根据您在时间t(所以original top position of object + s(t))获得的值调整对象的顶部位置。我想你会使用某种动画循环。也许是setInterval。也许其他在 Javascript 动画方面有更多经验的人可以提出实现这一点的最佳方式。但是,这将是您用来确定对象在时间 t 的位置(如果它掉落)的公式。

【讨论】:

    【解决方案2】:

    平台游戏中的重力基本上是这样的:

    var currentGrav = 0.0;
    var gravAdd = 0.5; // add this every iteration of the game loop to currentGrav
    var maxGrav = 4.0; // this caps currentGrav
    
    var charPosY = getCharPosY(); // vertical position of the character, in this case the lower end
    var colPosY = getColDow(); // some way to get the vertical position of the next "collision"
    
    for(var i = 0; i < Math.abs(Math.ceil(currentGrav)); i++) { // make sure we have "full pixel" values
        if (charPosY == colPosY) {
           onGround = true;
           break; // we hit the ground
        }
        onGround = false;
        charPosY++;
    }
    

    现在跳一个可以简单地这样做:

    if (jumpKeyPressed && onGround) {
        currentGrav = -5.0; //
    }
    

    如果您愿意(并且了解 C),您可以在此处查看我的游戏以了解基本平台游戏(带有移动平台):
    http://github.com/BonsaiDen/Norum/blob/master/sources/character.c

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 2019-02-10
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多