1

我正在重新组装我为 android 编写的游戏。它是用简单的画布编写的,用于学习基础知识。为了让它更上一层楼,我将在libgdx. 为此,我想到了一个stage我添加我的Actors(怪物,技能,如果他们是活跃的,角色,也许是粒子)到的地方。我读到这是组装 2D 游戏的好方法。

关于它的更多信息。这是一款基于正方形系统的 2D 角色扮演游戏。每一步都是下一个方块的移动。(可能是基于稍后的图块。目前背景是单张图片)

在旧版本中,我为每个怪物使用线程,这样它们就可以按照“希望”的方式处理和反应。这在 libgdx 中也是可能的还是我需要以不同的方式处理它?

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

我也以这种方式对技能进行了编程。例如,火球是一张由线移动直到撞到某物的图片。

参见“原型”的图片。带有画布的原型图片

4

2 回答 2

3

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

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

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

通常,libgdx 通过ApplicationListener类(特别是render()方法)支持“主循环”模型。有许多教程可以帮助您入门,其中包括适用于 Android的教程。

我知道这种方法一开始可能看起来更受限制,但它允许更可靠的代码。

于 2013-03-14T11:03:02.707 回答
1

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

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

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

于 2013-03-14T10:57:38.340 回答