我目前正在研究上下弹跳球的 2D 弹跳球物理。物理行为很好,但最后速度保持 +3 然后 0 不间断,即使球已经停止弹跳。我应该如何修改代码来解决这个问题?
这是视频展示了它是如何工作的。注意:Bandicam 无法记录 -3 和 0 之间的速度转换。因此,当球停止弹跳时,它只会显示 -3。
https://www.youtube.com/watch?v=SEH5V6FBbYA&feature=youtu.be
这是生成的报告:https ://www.dropbox.com/s/4dkt0sgmrgw8pqi/report.txt
ballPos = D3DXVECTOR2( 50, 100 );
velocity = 0;
acceleration = 3.0f;
isBallUp = false;
void GameClass::Update()
{
// v = u + at
velocity += acceleration;
// update ball position
ballPos.y += velocity;
// If the ball touches the ground
if ( ballPos.y >= 590 )
{
// Bounce the ball
ballPos.y = 590;
velocity *= -1;
}
// Graphics Rendering
m_Graphics.BeginFrame();
ComposeFrame();
m_Graphics.EndFrame();
}