【问题标题】:Move Actors accuratley LibGDX Scene2d准确移动演员 LibGDX Scene2d
【发布时间】:2015-03-03 00:59:16
【问题描述】:

所以我有一个角色,它是一个精灵,设置在屏幕视口舞台上。我想要做的是能够触摸演员,然后触摸屏幕上的一个点,它会流畅地移动。目前,当我触摸演员时,它似乎只是跳到随机点。这是我的演员类中的一些代码,

public MyActor(){

    setBounds(sprite.getX(),sprite.getY(),
              sprite.getWidth(),sprite.getHeight());

    setTouchable(Touchable.enabled);

    addListener(new InputListener(){
        @Override
        public boolean touchDown(InputEvent event, float x, float y,
                                 int pointer, int button) {

            MoveByAction mba = new MoveByAction();
            mba.setAmount(x,y);
            MyActor.this.addAction(mba);
            return true;
        }


    });
}

@Override
protected void positionChanged() {
    sprite.setPosition(getX(),getY());
    super.positionChanged();
}

@Override
public void draw(Batch batch, float parentAlpha) {
   sprite.draw(batch);
}
@Override
public void act(float delta){
    super.act(delta);
}

【问题讨论】:

  • 使用舞台视口相机的投影方法,将屏幕X和y转换为舞台的x和y。

标签: java android libgdx scene2d


【解决方案1】:

这里有几件事要问。首先,您的触摸只是在触摸您的 Actor 时。那将是演员所在的位置。你需要在你的场景级别实现一些基本的状态机来知道“在第一次点击时,这个演员被选中”,然后它必须处于“选择这个演员去哪里”状态,最后当你选择一个位置时将该 XY 发送给选定的 actor 以进行移动。

现在,正如 Tenfour04 所提到的,您必须计算出屏幕的触摸点 XY 到游戏世界坐标的转换。 Tenfour04 对使用视口相机上的投影方法来实现这一点做出了很好的评论。一旦你这样做了,你可以将坐标发送给你的演员来做前面提到的事情。

为了实现移动,我会使用 Action 框架,如下所示: actor.addAction(moveTo(x, y, 0.4f, Interpolation.circle));

此页面向您展示了适用于 Scene2d 的所有不错的操作:https://github.com/libgdx/libgdx/wiki/Scene2d#actions

希望这就是您所需要的。 :)

【讨论】:

    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2020-07-13
    • 2013-08-06
    • 2017-04-11
    • 2013-10-04
    相关资源
    最近更新 更多