我想在SCENE2D游戏中实现一个事件。
有三个精灵,它们一次移动/旋转。我想以同步的方式进行移动,这样它就像一个物体一样。 (就像一台机器的部件一样)。
要实现这一点,我可以遵循哪种方法? 我首先考虑使用线程,然后在GitHub中阅读这篇文章。
https://github.com/libgdx/libgdx/wiki/Threading
但是阅读之后我感到很困惑,是否在像sprite这样的图形对象上使用线程是好的。如果可以的话,我怎样才能构成线程?如果不行,我可以按照哪种方式来实现sprite的同步运动? / p>
答案 0 :(得分:1)
您可以使用线程,但实现起来相对困难,很可能会让您难以跟踪并发问题。
您可以使用render方法更新sprite移动。如果你的游戏不是太重,它只会以60 fps的速度运行,增量时间将大约是1/60秒。当它变得更高虽然您需要决定是否要跳过更新或使它们更快(例如未测试的伪代码):
float rotationFactor = 0.1f;
public void render(float delta)
{
sprite1.rotate(delta * rotationFactor);
sprite2.rotate(delta * rotationFactor);
sprite3.rotate(delta * rotationFactor);
...
}
或者,如果您希望在游戏稍微慢一点时阻止大的旋转步骤
public void render(float delta)
{
sprite1.rotate(rotationFactor/60);
sprite2.rotate(rotationFactor/60);
sprite3.rotate(rotationFactor/60);
...
}
如果您确实想要使用线程,我建议使用计时器并在超时时调用Gdx.app.postRunnable()
。这样,更新仍将在UI线程上执行。