[英]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.