LibGDX Scene2D:如何对不在左下角的演员应用动作?

LibGDX Scene2D: How to apply actions to actors which are not located at bottom left corner?

这是来自 Main class 的代码:

MyActor myActor = new MyActor;
moveAction = new MoveToAction();
moveAction.setPosition(600f, 750f);
myActor.addAction(moveAction);

这是来自 MyActor 的代码 class

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

如果这样写,动作会起作用,但纹理起始位置在左下角,如果我用其他坐标替换getX()和getY(),动作不会起作用,纹理只会停留在同一个位置。那么我究竟如何设置演员的起始位置呢?

演员有自己的位置值。考虑到您使用它们在正确的位置绘制纹理,您可能知道这一点。因此,您需要做的是在创建Actor时设置Actor的初始位置。像这样:

MyActor myActor = new MyActor;
myActor.setPosition(100, 100);

现在,如果您想给演员一个移动到其他地方的动作,而不是创建一个新的 MoveToAction,请使用 Actions 方便的方法,如下所示:

myActor.addAction(Actions.moveTo(600, 750));

这会立即将 Actor 移动到那个位置,所以如果你想让 Actor 在某个时间段内移动到那里,你必须像这样写那行:

myActor.addAction(Actions.moveTo(600, 750, duration));

duration 是一个浮点数,它包含您希望演员到达指定位置所需的秒数。