我想创建非常简单的跳跃动画 - 在用户HITS空间之后,角色跳跃(向上移动轴为400px和向下)。问题是设置跳跃限制(400px)。按空格会启动动画,让它一无变化,角色上升而不会停在400px处。
public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
if(key == KeyEvent.VK_SPACE) {
if(y > 400) {
dy = -1;
} else {
dy = 0;
}
}
}
y是角色的坐标,dy在actionPerformed()
方法中改变y。
因此,击中低于400px的空间会将dy更改为-1并且永远不会再次为0。我该如何解决这个问题?
答案 0 :(得分:0)
你可以引入重力,重力可以是一个恒定的力向下推动你的精灵,每次更新,经过一段特定的速度加到你的Y速度的时间。然后当用户按下跳跃时,你给你的Y速度一些负值。在每次更新期间,精灵都会减慢跳跃到跳跃峰值的速度,然后在加速时开始缓慢回落。这里的技巧是选择足够大的初始负Y速度以达到所需的高度。
如果您的速度是以每毫秒像素为单位指定的,那么在您的Y速度上添加大约.01到.04的重力应该是开始测试的好数字。