繁体   English   中英

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

[英]threading in libgdx and general questions to move sprites

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

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

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

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

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

看到“原型”的图片。 用帆布原型的图片

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM