移动组时libgdx坐标错误

时间:2017-02-12 23:51:24

标签: java libgdx scene2d

请考虑以下代码段:

class Level implements Screen{

    Stage stage;
    Group spaceInvaderGroup;

    public Level(){
        stage = new Stage(new FitViewport(120, 200));
        spaceInvaderGroup = new Group();

        spaceInvaderGroup.addActor(new SpaceInvader);
        spaceInvaderGroup.addActor(new SpaceInvader);
        spaceInvaderGroup.addActor(new SpaceInvader);
        spaceInvaderGroup.addActor(new SpaceInvader);
    }

    public void render(){
        spaceInvaderGroup.moveBy(0.1F,0);
        stage.act();
        stage.draw();
    }

}

class SpaceInvader extends Actor{

    private Sprite sprite;
    private Vector2 stageCoords;

    SpaceInvader(){
        sprite = new Sprite;
        //set Textures of sprite here
        //bounds are set here using SI units        
    }

    @override
    public void draw(Spritebatch batch, float parentAlpha){
        batch.draw(sprite);
        super.draw();
    }

    @override
    public void act(){
        setGlobalPosition();
        sprite.setPosition(stageCoords.x, stageCoords.y);   
        super.act();
    }

    private void setGlobalPosition() {   
        stageCoords = localToStageCoordinates(new Vector2(0, 0));
    }

}

我想在libgdx中制作一个SpaceInvaders游戏。由于太空入侵者以协调的方式移动,我决定将它们放在group中并使用moveBy方法移动该组。要绘制spaceInvaders,我得到他们的stage coordinates并使用舞台坐标绘制Sprite。问题是,舞台坐标不正确。我的问题是,同时从不同群体中吸引演员的正确方法是什么?我的方法是否正确,首先将所有局部corrdinates转换为舞台坐标,如果是,为什么我的结果错了?

0 个答案:

没有答案