这是Main类的代码:
MyActor myActor = new MyActor;
moveAction = new MoveToAction();
moveAction.setPosition(600f, 750f);
myActor.addAction(moveAction);
这是MyActor类的代码
@Override
public void draw(Batch batch, float alpha){
batch.draw(texture,getX(),getY());
}
如果这样写,则动作将起作用,但纹理的起始位置位于左下角,如果我用其他坐标替换getX()和getY(),则该动作将不起作用,纹理将仅停留在相同的位置。那么我如何准确地设定演员的起始位置呢?
最佳答案
演员有自己的位置值。考虑到要使用它们在正确的位置绘制纹理,您可能知道这一点。因此,您需要做的是在创建Actor时设置其初始位置。像这样:
MyActor myActor = new MyActor;
myActor.setPosition(100, 100);
现在,如果您想给actor一个动作以移动到其他地方,而不是创建一个新的
MoveToAction
,请使用如下所示的Actions
便捷方法:myActor.addAction(Actions.moveTo(600, 750));
这会将Actor立即移动到该位置,因此,如果您希望Actor在一定时间内移动到该位置,则必须这样编写该行:
myActor.addAction(Actions.moveTo(600, 750, duration));
duration
是一个浮点数,其中包含您希望角色到达指定位置所花费的秒数。