正方形的增加/减小速度
问题描述:
这是我为在屏幕上移动正方形而写的算法,Xcenter和Ycenter是正方形的中心。 speedX是水平速度,而verticalY是垂直速度。正方形的增加/减小速度
while (true)
{
int keyState = getKeyStates();
// Update the ball's position
xCenter += speedX;
yCenter += speedY;
// Check if the ball hit the bound. 'Reflect' the ball if so.
if (xCenter > xMax)
{
xCenter = xMax;
speedX = -speedX;
}
else if (xCenter < xMin)
{
xCenter = xMin;
speedX = -speedX;
}
if (yCenter > yMax)
{
yCenter = yMax;
speedY = -speedY;
}
else if (yCenter < yMin)
{
yCenter = yMin;
speedY = -speedY;
}
什么应该是提高速度的算法。 speedX ++只是在水平方向上增加,因此不能提供所需的结果。
在此先感谢。
答
您可以很好地按顺序递增/递减这些X,Y位置。因为设置一个变量不会移动正方形。但是当你将新的位置应用到行动中时,Square将立即进入新的位置。
一个建议
当你发现广场是走出去的边界,它实际上需要从对面出现。意思是if (xCenter > xMax)
集合xCenter = xMin
,反之亦然
如果您希望方向保持不变,则需要按比例增加两个组件。 –
我知道,但我无法弄清楚。如果我先写入x ++,然后再写入y ++,它们将按顺序执行,即x首先改变方向,然后是y。但是,它们必须一起发生 –
您应该将方向概念与速度概念分开。实际上,如果'speedX'是,例如-2,'speedX ++'会减慢到-1。再做一次,广场就停止了(在水平方向,就是这样)。 –