我在一个循环中运行了以下函数。这是一个基本的弹跳球。我的问题是每次反弹球都会增加。我怎么才能让它每次都弹到相同的高度?
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);发布于 2013-05-13 16:21:33
基本上这就是你想要的。
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能量,所以它给了我一个新的速度,当球达到极限时,它就是球的速度。(像地板或其他任何东西)。
https://stackoverflow.com/questions/16486547
复制相似问题