我开始在libgdx中开发游戏,并且想知道在以下情况下的最佳做法是什么。目前,我想做两件事:将菜单(精灵)移到适当的位置,然后将相机平移到播放器精灵。我想完成这些事情的想法是在render()函数中有一个“ action_stack” ArrayList。 ArrayList将包含“ Action”实例。每个Action
实例将具有一个step()
函数,该函数将被覆盖。在render()
函数中,我将遍历action_stack
,并触发每个元素的step()
函数。因此,要完成将菜单移到适当位置,我将创建该类:
public class MenuAnim1 implements Action {
private int targetX;
private int targetY;
private Sprite menu;
public MenuAnim1() {
//set initial sprite and position
}
public Step() (
//move this.menu towards targetX and targetY
//draw the sprite
//if not at target position, do nothing
//if at target position, remove this object from action_stack
}
}
...并将实例放入
action_stack
:MenuAnim1 menuAnim1 = new MenuAnim1();
action_stack.add(menuAnim1);
抱歉,如果我的Java不好,我对它不是很熟悉。无论如何,我的问题是:这是否是好的做法?人们通常会做什么?有没有更好的方法来做我在上面描述的事情?
最佳答案
我从未使用过Action,但是您的想法很好。如果希望它们与时间有关(因此与fps有关),请确保使用自上一帧到当前帧为止的时间,也称为delta或deltaTime。您可以这样获得:
Gdx.graphics.getDeltaTime();
因此,为了使您的动作将精灵移动到例如右侧,可以做到这一点:
speed = 10; //It will move 10 units per second.
delta = Gdx.graphics.getDeltaTime();
menu.translateX(speed*delta);
(Sprite#translateX)
关于android - libgdx-如何处理与时间有关的事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21127063/