我开始在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/

10-09 06:10