兩個位置之間的簡單移動

為此,最好的解決方案是使用 actions。要向 Scene2D 中的演員新增新動作,請致電:

Action action = Actions.moveTo(x,y,duration);
actorObject.addAction(action);

其中 x 和 y 是目標位置,持續時間是以秒為單位的移動速度(float)。

如果你想停止這個動作(和它的演員)你可以通過呼叫:

actorObject.removeAction(action);

或者你可以通過呼叫刪除所有操作:

actorObject.clearActions();

這將立即停止動作的執行。

moveTo 動作操作 actor 的 x 和 y 屬性,因此當你將 actor 繪製到螢幕時,總是使用 getX() 和 getY()來繪製紋理。就像下面的例子一樣:

public class MovingActor extends Actor {

    private Action runningAction;
    private float speed = 2f;

    public void moveTo(Vector2 location) {
       runningAction = Actions.moveTo(location.x, location.y, speed);
       this.addAction(runningAction);
    }

    public void stopAction() {
       this.removeAction(runningAction);
    }

    public void stopAllActions() {
       this.clearActions();
    }

    @Override
    public void draw(Batch batch, float parentAlpha){
        batch.draw(someTexture, getX(), getY());
    }
}