【问题标题】:Libgdx: draw actors in specific rectangleLibgdx:在特定矩形中绘制演员
【发布时间】:2014-07-18 05:40:57
【问题描述】:

我尝试在舞台中绘制 Group 的 Actor,但我只需要在舞台的特定区域绘制它们。

例如假设我把舞台分成左右两部分,那么我想只在舞台的左边部分画一些演员,所以如果其中一个去右边就不会了绘制。

到目前为止,我尝试使用setCullingArea方法但是Actors突然消失了,我想画一个actor的一部分,如果它在限制中。

换句话说,我正在寻找一种 Group 被绘制的蒙版区域。

谢谢。

【问题讨论】:

  • 好吧,您可以进行简单的碰撞检测并检查您的演员(矩形)是否最右侧触摸屏幕中心,然后不要让它绘制!
  • 但是我的问题是如果是极限就画一个演员的一部分,例如如果我的演员是一个圆圈,当它在屏幕中间时我想画一半一个圆圈。
  • 您需要检查如何在一个屏幕中设置两个视口,然后正交相机应该可以解决问题。
  • 试着在那里问它badlogicgames.com/forum

标签: android libgdx drawing


【解决方案1】:

您可以使用剪刀将绘图剪到屏幕的特定区域。

Rectangle leftSide;
Rectangle rightSide;

//...

public void resize(int width, int height){
    //...

    leftSide = new Rectangle(0,0,width/2, height);
    rightSide = new Rectangle(width/2, 0, width/2, height);

}

public void render(){
    //...

    Gdx.gl.glEnable(GL20.GL_SCISSOR_TEST);
    Gdx.gl.glScissor((int)leftSide.x, (int)leftSide.y, (int)leftSide.width, (int)leftSide.height);

    //Draw stage with left side actors (set right group invisible)
    //...

    Gdx.gl.glScissor((int)rightSide.x, (int)rightSide.y, (int)rightSide.width, (int)rightSide.height);

    //Draw stage with right side actors (set left group invisible)
    //...

    Gdx.gl.glDisable(GL20.GL_SCISSOR_TEST);

    //...
}

如果您有其他演员需要跨越边界,您可以在启用剪裁之前先绘制它们,然后将它们设置为不可见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    相关资源
    最近更新 更多