在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()是要走的路,我在哪里出错了?
答案 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);
}
不确定它是否是最有效的解决方案......