libgdx中的线程和移动精灵的一般问题

时间:2013-03-14 10:46:27

标签: java android libgdx

我正在重新组装我为Android写的游戏。它是用简单的画布编写的,用于学习基础知识。为了达到更高的水平,我将在libgdx的帮助下编写它。 为了做到这一点,我考虑了stage我在哪里添加我的Actors(怪物,技能,如果他们是活跃的,角色和可能是粒子)。我读到这是一个讨论2D游戏的好方法。

关于它的一些更多信息。这是一个基于方形系统的2D RPG。每一步都是移动到下一个广场。(也许是后面的瓷砖。目前背景是单张图片)

在旧版本中,我为每个Monster使用了线程,因此他们可以按照“希望”处理和做出反应。这在libgdx中是否也可以,或者我是否需要以不同的方式处理它?<​​/ p>

如果我想将角色从一个方格移动到下一个方格,我有一个计算的时间,我通过更改它的像素位置将精灵从一个方格移动到下一个方格。在libgdx中,我将使用方块作为init的相机。所以(40f,30f)例如。像我在旧游戏中那样在thread内移动角色是否有效?所以我知道从一个广场到下一个广场需要500毫秒,所以每50毫秒ppuX需要+ 0.1f。我也根据它更新了精灵。因此,如果它移动得更快,精灵会变得更快。

我也以这种方式编写技能。例如,火球是一个被线程移动直到它碰到某个东西的图片。

查看“原型”的图片。 Picture of the prototype with canvas

2 个答案:

答案 0 :(得分:3)

这可能是可能的,但是为每个实体分配一个线程是一个非常糟糕的主意 - 事实上它很糟糕,它有一个相应的TheDailyWTF条目:

http://thedailywtf.com/Articles/Sprite_Threading.aspx

在这种方法中,您不仅不必要地消耗资源,而且从长远来看,您也会危及您的理智。我相信链接条目以及评论,详尽阐述了为什么会这样。

通常,libgdx通过ApplicationListener类(特别是render()方法)支持“主循环”模型。 There is a number of tutorials让您入门including one for Android

我知道这种方法最初可能看起来更有限,但它允许更可靠的代码。

答案 1 :(得分:1)

在LibGdx中,将连续调用 Game 类的 render()方法。在这种方法中,你可以做4件事。

1)过程输入
2)更新精灵/演员
3)检查碰撞
4)渲染世界

您无需为移动游戏对象创建单独的线程。