libgdx:在依赖移动的actor之间的固定位置actor

时间:2014-01-28 12:31:20

标签: libgdx

在libgdx中使用scene2d,我希望演员相对于屏幕保持固定,但同时还有其他演员,即相互缩放和移动,在它上面(覆盖)和在它下面,如此处所示:

我发现固定演员(红色)在其他人之间具有z级别的唯一方法是使其成为图中蓝色演员的孩子(如绿色),但随后它是缩放并与其父母一起移动(蓝色)。

我尝试通过覆盖固定actor中的draw()来解决这个问题:

    public void draw(SpriteBatch batch, float parentAlpha){
        Vector2 coord = new Vector2(SCREEN_X, SCREEN_Y);
        getStage().screenToStageCoordinates(coord);
        stageToLocalCoordinates(coord);
        setPosition(coord.x, coord.y);
        setScale(1/getParent().getScaleX());
        super.draw(batch, parentAlpha);
    }

...但结果是它在两个地方(每隔一次)被绘制,产生闪烁效果。

有没有更好的方法来达到这种效果?

如果覆盖draw()是要走的路,我在哪里出错了?

1 个答案:

答案 0 :(得分:1)

调用父级的stageToLocalCoordinates()而不是它自己的作品:

   public void draw(SpriteBatch batch, float parentAlpha){
        Vector2 coord = new Vector2(SCREEN_X, SCREEN_Y);
        getStage().screenToStageCoordinates(coord);
        getParent().stageToLocalCoordinates(coord);
        setPosition(coord.x, coord.y);
        setScale(1/getParent().getScaleX());
        super.draw(batch, parentAlpha);
    }

不确定它是否是最有效的解决方案......