2013-02-26 69 views
0

我正在用Java/Slick2D开发2D平台游戏。精灵的不平滑运动

到目前为止,我的角色每帧都移动了一个恒定的像素数量。 我试过切换到使用'delta'变量(帧之间的时间量),就像建议的那样,但角色的移动看起来非常紧张。

如何平滑角色的动作?

private static final float DEFAULT_SPEED = 0.15f; 

    Vector2f trans = new Vector2f(); 
    Input i = gc.getInput(); 
    boolean run = false; 

    // X-Axis Movement 
    if (i.isKeyDown(Input.KEY_D)){ 
     trans.x += DEFAULT_SPEED * delta; 
     lastMoveDirection = Direction.RIGHT; 
    } 
    if (i.isKeyDown(Input.KEY_A)){ 
     trans.x -= DEFAULT_SPEED * delta; 
     lastMoveDirection = Direction.LEFT; 
    } 
    if (i.isKeyDown(Input.KEY_LSHIFT)){ 
     trans.x *= RUN_SPEED_MULTIPLIER; 
     run = true; 
    } 

回答

1

你如何定义增量?它应该是一个帧需要花费多少时间来绘制/距离每秒移动,或类似。

+0

谢谢,我已经设法通过divinding来解决它,就像你说的,而不是通过浮点数来实现。我猜这只是浮点数像素不好看。 – 2013-02-26 18:00:08

+0

插值工作的原因在于,它可以平滑地将运动分散到帧中,而与帧速度无关。我怀疑有一个浮点数像素是特别的问题,但它可能是。 – MrLeap 2013-02-26 18:02:01

+0

嗯,我只是猜测,但由于实际上不可能移动非整数像素并且抗锯齿处于活动状态,所以模糊可能会导致此问题。我真的不知道,但现在已经修好了。 整数除法总是让我。 – 2013-02-26 18:06:04