gpt4 book ai didi

javascript - 弹跳球获得动力

转载 作者:行者123 更新时间:2023-11-30 05:48:15 25 4
gpt4 key购买 nike

我有以下循环运行的函数。这是一个基本的弹跳球。我的问题是球每次弹跳都会增加。我怎样才能让它每次都弹到相同的高度?

function ballUpdate(elapsed)
{
var timeModifier = elapsed;
ball.x += (ball.dx*timeModifier);
ball.y += (ball.dy*timeModifier);
if(ball.y <= 0)
{
ball.dy *= -1;
ball.y = 0;
}
else if(ball.y > 0)
{
ball.dy += -.5*timeModifier;
}
}

function draw()
{
ball.update();
}

function main(elapsed)
{
keyinput(elapsed);
ballUpdate(elapsed);
}

animLoop(main,draw,15);

最佳答案

  1. 第一个明显的错误是您试图将速度乘以耗时……它不起作用。您要做的是在每次迭代时将速度 (dx,dy) 添加到您的 (x,y) 中……所以忘记这个elapsed

  2. 加速度将始终存在...您不需要 if(ball.y > 0)

  3. 由于调整ball.y = 0当球触及极限(地板)时,反转速度是不够的。当球真正触及极限时,你必须考虑球的确切速度。为此,您必须在此处使用势能 + kinect 能量概念(如果您想了解方程式的详细信息,请谷歌搜索)。


基本上这就是您想要的。

function ballUpdate(elapsed)
{
var acceleration = -0.5;

ball.x += ball.dx;
ball.y += ball.dy;

if ( ball.y <= 0 )
{
ball.dy = Math.sqrt( -2 * acceleration * ( ball.y - ball.dy ) + ball.dy * ball.dy );
ball.y = 0;
}

ball.dy += acceleration;
}

复制粘贴。它应该工作。我在这里所做的是测量球的总能量,即球达到极限之前的势能加上球达到极限之前的 kinect 能量。之后,我将这些能量完全转换回 kinect 能量,所以它给了我一个新的速度,即球触及极限时的速度。 (比如地板或其他任何东西)。

关于javascript - 弹跳球获得动力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16486547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com