这是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是一个浮点数,其中包含您希望角色到达指定位置所花费的秒数。

10-05 22:02