如何使用Scene2D在LibGDX中实现类似于界面的棋盘游戏

时间:2014-05-09 02:37:22

标签: java libgdx

我刚开始游戏开发,并决定使用LibGDX制作2048克隆来学习基础知识。

我开始使用一个简单的2D数组实现它,它可以工作,但问题是没有任何动画。因此,例如,如果有一个位于[0][0]位置的磁贴,并且在用户滑动屏幕后它必须移动到[0][3],那么转换会立即发生(因为我基本上只是更新我的2D数组并重新渲染瓷砖。

我被告知这种类似棋盘游戏的UI是使用Scene2D的完美场景。我可以使用Actors轻松实现基本的4x4网格,但我的问题是,如何使用Scene2D正确管理基本上是2D结构?

如果用户滑动电路板(左,右,上,下)并更新2D数组,我已经有了算法来处理移动磁贴的位置,但感觉就像我使用的是Scene2D,使用这个二级二维数组数据结构过度。

现在我的方法是:

  1. 使用我的图块
  2. 创建一个2D数组和Scene2D
  3. 当用户滑动时,使用图块的新位置
  4. 更新2D阵列
  5. 迭代Scene2D中的actor并将其与我更新的2D数组中的tile进行比较。如果有变化,请为它们设置动画(从图块的原始位置到其最终位置的基本过渡)
  6. 我只是喜欢我在这里有不必要的步骤和不必要的数据结构。

    处理这种情况的正确方法是什么?

    感谢有用的建议,谢谢!

1 个答案:

答案 0 :(得分:0)

您是否将瓷砖放在TableLayout中?正如你所发现的那样,只是把它拉过来就行不了。

要为其设置动画,您需要定义一个MoveAction。

MoveToAction moveAction = new MoveToAction();
moveAction.setPosition(300f, 0f);
moveAction.setDuration(10f);
myActor.addAction(moveAction);

示例复制自: http://www.gamefromscratch.com/post/2013/12/09/LibGDX-Tutorial-9-Scene2D-Part-2-Actions.aspx

如果您使用TableLayout,我不确定如何实现。