我有一个立方体,我只在 x 轴上的 3 点(浮点位置)之间移动它。所以立方体将从 0.00 开始,我按右键,它在 x 轴上向右移动到 2.0f。然后我按左键,它又回到了0.0f。然后我再次按左键,它移动到 -2.0f。按右键现在应该将其返回到 0.0f,但相反,它会超过 0。误差的大小取决于我移动的速度。
如果我从左键开始,这也会产生相同的结果。
if(MoveLeftFlag == true)
{
if(PositionFlag == 0)
{
if(Cube1.PositionX > MinCubeMovement)
{
Cube1.MoveLocalX(-CubeMoveSpeed * FrameTime );
}
else if(Cube1.PositionX < MinCubeMovement)
{
PositionFlag = -1;
MoveLeftFlag = false;
}
}
if(PositionFlag == 1)
{
if(Cube1.PositionX > Middle)
{
Cube1.MoveLocalX(-CubeMoveSpeed * FrameTime );
}
else if(Cube1.PositionX < Middle)
{
MoveLeftFlag = false;
PositionFlag = 0;
}
}
}
if(MoveRightFlag == true)
{
if(PositionFlag == 0)
{
if(Cube1.PositionX < MaxCubeMovement)
{
Cube1.MoveLocalX(CubeMoveSpeed * FrameTime );
}
else if(Cube1.PositionX > MaxCubeMovement)
{
MoveRightFlag = false;
PositionFlag = 1;
}
}
if(PositionFlag == -1)
{
if(Cube1.PositionX < Middle)
{
Cube1.MoveLocalX(CubeMoveSpeed * FrameTime );
}
else if(Cube1.PositionX > Middle)
{
MoveRightFlag = false;
PositionFlag = 0;
}
}
}
帧时间float frametime = getTimeInMillSeconds()/1000;
并且速度设置为 '0.000001f;这对我来说以相当平稳的速度移动它。正如我所说,如果我使速度更大,那么当立方体第二次返回到 0.0f 时,偏移误差会变大。
谁能指出我正确的方向。
我已经解决了这个问题,很惊讶我没有注意到这一点,但基本上我在应该使用>= 和 <= 的时候使用了<和>。和>