【问题标题】:LibGDX Scene2D: How to apply actions to actors which are not located at bottom left corner?LibGDX Scene2D:如何将动作应用于不在左下角的演员?
【发布时间】:2015-04-21 12:26:31
【问题描述】:

这是 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() 替换为其他坐标,动作将不起作用,纹理将只是保持在同一个位置。那么我究竟是如何为演员设置起始位置的呢?

【问题讨论】:

  • 是的,它确实做了应该发生的事情。您正在对位置进行硬编码,因此它不会移动...
  • 那么我应该如何设置纹理的起始位置?
  • 你必须给你的演员xPosyPos,如果你想移动你的演员,你增加或减少这些变量。

标签: java libgdx scene2d


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2014-03-28
    • 2016-05-28
    • 2013-10-04
    • 1970-01-01
    • 2015-12-10
    相关资源
    最近更新 更多