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
是一个浮点数,它包含您希望演员到达指定位置所需的秒数。
这是来自 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
是一个浮点数,它包含您希望演员到达指定位置所需的秒数。