在 3 点之间移动模型会导致模型偏离位置

Moving a model between 3 points results in the model out of position

本文关键字:模型 位置 之间 移动      更新时间:2023-10-16

我有一个立方体,我只在 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 时,偏移误差会变大。

谁能指出我正确的方向。

好的,

我已经解决了这个问题,很惊讶我没有注意到这一点,但基本上我在应该使用>= 和 <= 的时候使用了<和>。