让我们说我试图移动一个3D模型并保持简单我只是想在x轴上移动它。我从位置0.0开始并将其移动到位置10.0。
问题在于,根据我移动的速度,我最终会出现位置错误,这意味着我需要快速回到位置10.0。
例如,如果速度为3.0,则每帧我将3.0添加到x位置 0.0 3.0 6 9 12.0
如果我想在10.0到达时停止,我可以使用此代码
if(model.x <= 10.0f)
model.x += speed * FrameTime;
else
model.x = 10.0f;
但是在模型达到10.0之前,模型将达到12.0位置
这也意味着我移动得越快,错误就越大。
任何人都可以建议一个更好的方法来移动模型,以便消除或至少减少错误,因此它看起来不像我的模型反弹。
答案 0 :(得分:3)
float minX = 0;
float maxX = 10;
float dx = speed * FrameTime;
model.x = Math.max(minX, Math.min(model.x + dx, maxX));
也许不是最清晰的解决方案,但它可以在一行中完成所需。