Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的重力在这里起作用?_Javascript_Physics_Gravity - Fatal编程技术网

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; //
}