Java slick2d每隔x秒移动一个对象

时间:2017-09-25 02:50:18

标签: java eclipse graphics game-engine slick2d

我目前正在制作一款2D游戏,玩家精灵会在屏幕上推动其他精灵。

我当前的代码(在子类中):     // x和y是我希望此对象移动到的共同点(例如50像素     它的出发点等。)

insert into data (timeStampCol) values('2017-05-02 17:33:03');

如何让对象移动每1秒50像素?或者每隔x帧。

我尝试使用delta,但这会导致平稳运动,这对于我的特殊需求来说更难控制。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

你用增量完成它的方法是正确的。假设您在更新方法中有移动方法并在那里调用它(或以类似的方式实现它)。您可以通过以下方式实现这些目标:

class YourGameStateWithUpdateRenderInit extends BasicGameOrWhatever{

//Global variables for updating movement eacht second.
float myDelta = 0; // your current counter
float deltaMax = 1000; // 1 second, determines how often your object should move

public void update(...){
      objectToMove.move(50,50,delta); //The object which contains the move method and you move it by 50 x/y per second.
      }
}

在您的objectToMove类中,您有移动方法:

public Boolean move(float x, float y, float pDelta) {
  myDelta += pDelta;
  if(myDelta >= deltaMax){
    this.setx(x);
    myDelta = 0;
  }
}

这应该适用于每秒更新一次。然而,这个实现并不是真正好或精确,因为你说你可能在子类或类似的东西中有移动方法。因此,您需要根据自己的需求进行调整,但我希望您能够了解它背后的想法。我认为它演示了通过增量值计算类属性的目的,直到某个值(例如1000秒,1秒),然后将其设置回零。