在 3 点之间移动模型会导致模型偏离位置
Moving a model between 3 points results in the model out of position
我有一个立方体,我只在 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 时,偏移误差会变大。
谁能指出我正确的方向。
好的,
我已经解决了这个问题,很惊讶我没有注意到这一点,但基本上我在应该使用>= 和 <= 的时候使用了<和>。和>
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- QTableView:endMoveRows在模型中重置水平页眉大小
- 将IBM Rhapsody模型集成到VS 2019中
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 旋转模型矩阵时的形状失真
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 如何在NS-3中使用Ramdomwaypoint模型时设置位置分配器
- C 中的内存模型:为什么在同一内存位置分配了结构中的两个整数
- 在 3 点之间移动模型会导致模型偏离位置
- opencv:使用旋转和平移向量设置模型位置
- 对象模型加载纹理坐标和顶点位置没有正确加载
- 带有骨骼的Assimp + COLLADA模型=不正确的顶点位置
- 在中心位置渲染模型不显示(已修改)
- 在3D场景中存储模型位置的好方法是什么?