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

Java libgdx中的线程和移动精灵的一般问题,java,android,libgdx,Java,Android,Libgdx,我正在重新组装我为android编写的游戏。它是用简单的画布来学习基础知识的。为了让它达到更高的层次,我将在libgdx的帮助下编写它。 为了做到这一点,我考虑了一个阶段,我添加了我的演员怪物,技能,如果他们是活跃的,字符,也许粒子。我读到这是一个很好的方式来攻击2D游戏 关于它的更多信息。这是一个基于正方形系统的2D RPG。每一步都是到下一个方块的一步。可能以后再平铺。目前,背景是一张图片 在旧版本中,我对每个怪物都使用线程,这样它们就可以随心所欲地处理和反应。这在libgdx中也是可能的,

我正在重新组装我为android编写的游戏。它是用简单的画布来学习基础知识的。为了让它达到更高的层次,我将在libgdx的帮助下编写它。 为了做到这一点,我考虑了一个阶段,我添加了我的演员怪物,技能,如果他们是活跃的,字符,也许粒子。我读到这是一个很好的方式来攻击2D游戏

关于它的更多信息。这是一个基于正方形系统的2D RPG。每一步都是到下一个方块的一步。可能以后再平铺。目前,背景是一张图片

在旧版本中,我对每个怪物都使用线程,这样它们就可以随心所欲地处理和反应。这在libgdx中也是可能的,还是我需要以不同的方式处理它

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

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

请参见原型的图片

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

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

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

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

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


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

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

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

通常,libgdx通过类(特别是方法)支持主循环模型。为了让你开始


我知道这种方法一开始似乎更具局限性,但它允许编写更可靠的代码。

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

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

通常,libgdx通过类(特别是方法)支持主循环模型。为了让你开始


我知道这种方法一开始似乎更具局限性,但它允许编写更可靠的代码。

我知道该教程,但我想知道如果我的怪物迈出第一步,如何让他们计算下一步。如果他的动作完成了,我可以简单地在渲染中运行演算吗?所以我总是检查一个布尔movedone,如果他在下一个街区,它就会被设置。如果我做了,我会计算下一步吗?演戏?我不确定我是否理解你如果不理解,请重新表述答案,但我认为你的问题是如何让你的怪物实体知道他们应该移动。好吧,因为你将在一个线程中运行,你不必有一个moveDone标志——怪物要么已经移动了,要么没有,没有中间状态。例如,您可以在render方法中将所有怪物移动到一个块中,然后执行其他逻辑。这回答了你的问题吗?或多或少。我有一个正方形系统,总是想让他们计算下一步。所以,如果他们是在一个正方形移动完成,我想计算出最好的下一个正方形去。这是一个很好的KI算法。好吧,这里最大的初始问题是冲突解决——如果两个怪物想同时移动,哪一个应该先移动?你可以在你的渲染方法中,以一个一致的顺序,简单地在你的怪物上循环——顺序是什么,这取决于你的游戏。在移动阶段之后或之前,您将有一个效果阶段,该阶段将包含其余的逻辑。注意,这将更容易用一根线把你的头绕起来。顺便说一句,AI,人工智能,是KI的全球术语-我之所以知道它,是因为我懂德语:。是的,这是这种情况下并发的典型问题之一。你是说粒子效应吗?好
它只是libgdx中的一个图形效果,你可以使用draw方法将其附加到演员身上-这很有意义,你不是围绕图形效果产卵器构建逻辑,而是围绕游戏逻辑构建逻辑,例如,一条喷火的龙,我知道那个教程,但我想知道如果我的怪物迈出第一步,我如何让他们计算下一步。如果他的动作完成了,我可以简单地在渲染中运行演算吗?所以我总是检查一个布尔movedone,如果他在下一个街区,它就会被设置。如果我做了,我会计算下一步吗?演戏?我不确定我是否理解你如果不理解,请重新表述答案,但我认为你的问题是如何让你的怪物实体知道他们应该移动。好吧,因为你将在一个线程中运行,你不必有一个moveDone标志——怪物要么已经移动了,要么没有,没有中间状态。例如,您可以在render方法中将所有怪物移动到一个块中,然后执行其他逻辑。这回答了你的问题吗?或多或少。我有一个正方形系统,总是想让他们计算下一步。所以,如果他们是在一个正方形移动完成,我想计算出最好的下一个正方形去。这是一个很好的KI算法。好吧,这里最大的初始问题是冲突解决——如果两个怪物想同时移动,哪一个应该先移动?你可以在你的渲染方法中,以一个一致的顺序,简单地在你的怪物上循环——顺序是什么,这取决于你的游戏。在移动阶段之后或之前,您将有一个效果阶段,该阶段将包含其余的逻辑。注意,这将更容易用一根线把你的头绕起来。顺便说一句,AI,人工智能,是KI的全球术语-我之所以知道它,是因为我懂德语:。是的,这是这种情况下并发的典型问题之一。你是说粒子效应吗?嗯,这只是libgdx中的一个图形效果,你可以使用draw方法将其附加到一个演员身上-这很有意义,你不是在围绕效果生成者的图形构建逻辑,而是围绕游戏逻辑构建逻辑,例如,一条喷火的龙,它将是一个演员。