【发布时间】:2017-08-26 17:50:27
【问题描述】:
我正在使用 C++ 和 SDL2 制作类似 Pokemon 的游戏。我正在尝试完成它的网格移动(其中角色逐块移动,每个 32px)。
我已经完成了一个个地块的移动,但是看起来并不平滑,看起来很“机器人”。
这是我目前所拥有的:
overflowY += deltaY * elapsedTime;
overflowX += deltaX * elapsedTime;
if (overflowX >= 32){
_x += 32;
overflowX = 0;
}else if (overflowX <= -32){
_x -= 32;
overflowX = 0;
}
if (overflowY >= 32){
_y += 32;
overflowY = 0;
}else if(overflowY <= -32){
_y -= 32;
overflowY = 0;
}
AnimatedSprite::update(elapsedTime);
deltaX 是 1 或 -1(右或左)* 速度,与 deltaY 相同。 我的代码确实有效,但正如我所说,它看起来并不流畅。
有什么猜测吗?
【问题讨论】:
-
您可能还想引入加速。你的运动应该包括三个阶段——加速、匀速和减速。
-
精灵位置用什么?也只有
_x和_y或overflow*? -
@TobiasWollgam 只有 _x 和 _y。
-
但是 _x 和 _y 似乎总是 32 的倍数。所以你还需要溢出值才能顺利移动。
-
所以你的意思是两个溢出也必须是 32 的倍数? @TobiasWollgam