簡體   English   中英

移動演員Accuratley LibGDX Scene2d

[英]Move Actors accuratley LibGDX Scene2d

所以我有一個演員,是一個精靈,設置在screenviewport舞台上。 我想做的是能夠觸摸演員,然后觸摸屏幕上的某個點,它將流暢地移動。 目前,當我觸摸演員時,它似乎只是跳到隨機點。 這是我的演員類中的一些代碼,

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);
}

這里沒什么要問的。 首先,您的觸摸只是觸摸演員。 那將是演員的確切位置。 您需要在“場景”級別實現一些基本狀態機,才能知道“初次點擊,此角色已被選中”,然后它必須處於“選擇此角色去向”狀態,最后,當您選擇一個位置時,將該XY發送給選定的演員進行移動。

現在,正如Tenfour04所述,您必須弄清楚觸摸點在屏幕上的XY到游戲世界坐標的轉換。 Tenfour04對在視口攝像機上使用投影方法來實現此目標做出了很好的評價。 完成此操作后,您可以將坐標發送給演員以執行前面提到的工作。

為了實現運動,我將使用Action框架,如下所示:actor.addAction(moveTo(x,y,0.4f,Interpolation.circle));

此頁面顯示了可用於Scene2d的所有不錯的操作: https : //github.com/libgdx/libgdx/wiki/Scene2d#actions

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM