精灵可以穿线 - LibGdx

时间:2017-04-11 07:18:02

标签: multithreading libgdx

我想在SCENE2D游戏中实现一个事件。

有三个精灵,它们一次移动/旋转。我想以同步的方式进行移动,这样它就像一个物体一样。 (就像一台机器的部件一样)。

要实现这一点,我可以遵循哪种方法? 我首先考虑使用线程,然后在GitHub中阅读这篇文章。

https://github.com/libgdx/libgdx/wiki/Threading

但是阅读之后我感到很困惑,是否在像sprite这样的图形对象上使用线程是好的。如果可以的话,我怎样才能构成线程?如果不行,我可以按照哪种方式来实现sprite的同步运动? / p>

1 个答案:

答案 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线程上执行。