我目前正在研究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();
}
你的代码似乎不起作用。如果你没有ballPos.y + =速度,ballPos.y怎么能达到590? – user
现在的问题是每次反弹都会遇到<= 3的情况。所以,当球停止弹跳时,我需要找到停止增加速度的方法。这里是生成的报告:dropbox.com/s/4dkt0sgmrgw8pqi/report.txt – user
当然,你做'ballPos.y + = velocity'。我刚刚提到了更改后的代码部分。我们在谈论什么?<= 3?条件?毕竟,你怎么阻止球?你还没有发布这个代码,对吧?我会通过用'0到1之间的因子多重'velocity'来做到这一点。 –