-2

http://davzy.com/gameA/

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

有没有更好的方法来做重力?我想在没有游戏库的情况下做到这一点。

4

2 回答 2

2

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

s(t) = ut + 1/2at 2

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

于 2010-07-23T16:20:13.913 回答
0

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

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

于 2010-07-23T20:34:30.280 回答