我当前的动议是计算出来的。
//moveX and Y are normalized
moveX = moveX * time * speed;
moveY = moveY * time * speed;
当然,这会导致一种非常僵硬的动作,只是停下来走了。
跟踪加速度以创建加速/减速效果的有效方法是什么?我的游戏没有引力,因为它是自上而下的。
答案 0 :(得分:0)
具有单独的当前速度和目标速度变量。
使用恒定加速度将当前速度收敛到目标速度(例如,在每次paint(Graphics)
调用中)。
更新位置应该是posX += current_speedX
;不要通过乘以时间和速度来整合每次通话(因为它不会缩放到非线性运动)。
答案 1 :(得分:0)
您需要将时间限制为短值,并使用恒定的加速度加速功能来改变速度。因此,您可以模拟重力或其他加速度函数。
作为重力的示例,其中g是仅针对y轴的重力加速度。 SpeedX是不变的。间隔为100毫秒(相当于0.1秒)。 SpeedY改变了g加速度的效果。
while (true) {
moveX = moveX * 100 * speedX;
moveY = moveY * 100 * speedY;
speedY = speedY + g * 0.1;
Thread.sleep(100);
}