Javascript 为什么我的重力在这里起作用?
我想不出一个聪明的方法来获得重力。现在,它可以检测角色结束的块,但不会下降到该块Javascript 为什么我的重力在这里起作用?,javascript,physics,gravity,Javascript,Physics,Gravity,我想不出一个聪明的方法来获得重力。现在,它可以检测角色结束的块,但不会下降到该块 有更好的方法来做重力吗?我想在没有游戏库的情况下做这件事。我不知道你说的“获得重力”是什么意思;你的问题不清楚。我假设,如果可以检测到块何时结束,可以使用以下公式: s(t)=ut+1/2at2 其中,s是时间t的距离,u是初始速度(在您的情况下为零),而a是加速度(地球上为9.8m/s2)。基本上,您将根据在时间t获得的值调整对象的顶部位置(因此对象的原始顶部位置+s(t))。我想你会使用某种动画循环。可能是se
有更好的方法来做重力吗?我想在没有游戏库的情况下做这件事。我不知道你说的“获得重力”是什么意思;你的问题不清楚。我假设,如果可以检测到块何时结束,可以使用以下公式: s(t)=ut+1/2at2
其中,
s
是时间t
的距离,u
是初始速度(在您的情况下为零),而a
是加速度(地球上为9.8m/s2)。基本上,您将根据在时间t
获得的值调整对象的顶部位置(因此对象的原始顶部位置+s(t)
)。我想你会使用某种动画循环。可能是setInterval
。也许其他在Javascript动画方面有更多经验的人可以插嘴说实现这一点的最佳方式。然而,这将是你用来计算物体在时间t
下落时的位置的公式。基本上,平板成型机中的重力是这样的:
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++;
}
如果你想(并且理解C),可以在这里查看我的游戏,了解一个基本的platformer(带有移动平台):你最好粘贴一些代码,而不是让黑客有机会下载你的文件并在那里搜索你不知道在哪里。@OP你在说什么?我需要一种方法来给我的游戏增加吸引力,我不知道怎么做!如果你假装这个问题不是关于编程的,那就太好笑了。有更好的方法来做重力吗?有?!
if (jumpKeyPressed && onGround) {
currentGrav = -5.0; //
}