1

所以我目前正在设计一个游戏,其主要思想是你选择你的攻击,然后根据你选择的攻击播放动画(想想口袋妖怪)。游戏也是回合制的。

我的问题是,scene2d 是否比实现自定义解决方案来处理游戏的动画部分更容易使用。从我读过的内容来看(我发现很难找到关于scene2d的好信息),听起来scene2d会让按钮/菜单的UI设计变得非常容易,但我不确定我如何才能滚动它让演员动起来。是不是像处理按钮上的触摸事件,根据玩家的选择调用对应actor的action方法那么简单?

在我的脑海中,演员从不真正移动(除了在他们的动画期间,他们不会在屏幕上移动,他们只是在原地完成他们的动画)。在动画期间,还会有粒子效果(攻击),如果使用scene2d,则需要它们自己的actors。演员和攻击的同步会很难产生吗?

4

3 回答 3

2

演员确实动..

actor.addAction(Actions.moveTo(posX, posY, 5)));

通过这个你的演员移动到 posX, posY 和 5 是持续时间..

在我看来,使用 scene2d 将是一个好主意..

于 2013-10-27T07:34:27.977 回答
0

Scene2D 会更好,因为您必须在使用 Sprite 时手动实现诸如 Click 等动作的侦听器,而 Scene2D 提供了设置侦听器的功能。

于 2015-06-30T01:41:34.263 回答
0

您可能已经知道这一点,但让我尝试回答您的问题:

Scene2d 有一个非常方便的动作系统,它基本上允许以下操作:

  1. 执行任何提供的操作
  2. 使用许多提供的插值对它们进行微调
  3. 使用Actions.run()进行新操作
  4. 链现有动作形成序列

像这样:

import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.Action;
Action a1 = Actions.sequence(Actions.fadeOut(0), Actions.fadeIn(3, Interpolation.bounce));
Action a2 = Actions.moveTo(100, 200, 3, Interpolation.pow2Out);
Runnable r = new Runnable() {
    @Override
    public void run() {
        setColor(1, 0, 0, 1);
        System.out.println("now I'm a red actor");
    }
};

然后再组合,例如这样:

addAction(Actions.sequence(Actions.parallel(a1, a2), Actions.run(r)));

这使您可以从scene2d 的内置音序器中获利,至少可以为您节省一半的工作量。所以,回答你的问题,我认为使用这个系统很可能很容易地实现固定以及反应/随机动画。它还允许您轻松地将更简单的操作封装成更复杂的操作,并具有以下优点:

  • 非常可读和可维护的代码
  • 权衡 CPU/Mem:比存储普通序列甚至视频更节省内存
  • 反应性:通过这种方式,您可以将动画编程为每次都略有不同

另一方面,如果你经常想要“发现”的东西,这个开发系统可能会变得非常耗时,如下所示:

  • 自己实施非内置的基于时间的操作(如相机旅行)
  • 如果内置的插值不符合您的目标,请制作您自己的插值
  • 使用许多小颗粒元素(为此我会使用ParticleEditor)。

我不认为这是你的情况。最后,您应该看一下脊椎动画引擎。我自己不使用它,但可能对您的想法有用。

于 2016-08-30T19:43:53.053 回答