【发布时间】:2014-05-09 02:37:22
【问题描述】:
我刚开始游戏开发,并决定使用LibGDX 制作一个 2048 克隆来学习基础知识。
我开始使用一个简单的 2D 数组来实现它,它可以工作,但问题是没有任何动画。因此,例如,如果在位置[0][0] 处有一个图块,并且在用户滑动屏幕后它必须移动到[0][3],则该转换会立即发生(因为我基本上只是更新我的二维数组并重新渲染瓷砖)。
有人告诉我,这种类似于棋盘游戏的 UI 是使用 Scene2D 的完美场景。我可以使用 Actors 轻松实现基本的 4x4 网格,但我的问题是,如何使用 Scene2D 正确管理本质上是 2D 结构的内容?
如果用户滑动板(左、右、上、下)并更新 2D 数组,我已经有算法来处理移动图块的位置,但感觉就像我使用的是 Scene2D,使用这个二级二维数组数据结构太过分了。
目前我的做法是:
- 使用我的图块创建 2D 数组和 Scene2D
- 当用户滑动时,使用图块的新位置更新二维数组
- 遍历 Scene2D 中的演员,并将其与我更新的 2D 数组中的图块进行比较。如果有变化,为它们设置动画(从图块的原始位置到最终位置的基本过渡)
我只是觉得我这里有不必要的步骤和不必要的数据结构。
处理这种情况的正确方法是什么?
感谢有用的建议,谢谢!
【问题讨论】:
-
我不确定你是如何进行转换的,但是
Scene2D有Actions类,它可以让你轻松创建这些转换:actor.addAction(Actions.moveTo(x,y,duration))