好的,我会尽力解释我的问题。我有这个程序,您可以在其中选择 5 个球。当您选择一个时,您可以在按下鼠标按钮并且光标位于球的半径内时拖动它。
问题是我需要一种方法让球在用户停止按下鼠标按钮时上升,就像他让球漂浮在空中然后让它再次落下一样。我有一种方法可以知道时间、速度和加速度,但我不知道如何实现它。
现在我有这个:
void Circle::Fall(float velocity,float time)
{
if(this->posY >= 580)
{
this->posY = 580;
this->vfall= 0.0f;
}
else if(this->posY < 580)
{
//this->distance=9.81f * 0.5f*time*time;
this->vfall+= velocity;
this->posY += this->vfall;
}
}
这样一来,它就掉下来了,我无法达到我试图解释的效果。
此外,我正在这样计算时间(以防万一):
difX=(x> event.motion.xrel)? x-event.motion.xrel : event.motion.xrel-x;
difY=(y> event.motion.yrel)? y-event.motion.yrel : event.motion.yrel-y;
我使用 difY
作为时间变量
好的,对不起,我现在把它变成英文了。我将尝试使它更容易理解:
你需要让小球在松开点击的那一刻随着鼠标的速度漂浮的更久一点,就像一只手在受到冲动后将球抛向空中一样。它不必掉头或在 Y 上稍微上升一点。我正在使用 SDL,以防你需要知道
您还可以从窗口底部取出球,当您松开它们时,它们会自动返回
最佳答案
我想你想要这本书:Physics for Game Developers .
关于c++ - 自由落体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706920/