小编典典

libgdx视图在actor.draw()内部截锥体

java

我正在使用libgdx开发一个小游戏。这是一款二维自上而下的游戏,上面有一些大地图,上面有很多物体。所以我只想在我的视锥中渲染事物。我看过了camera.frustum.***inFrustum(Paramter... p)。但是我正在使用scene2d,并且在中设置了相机Stage,将SpriteBatchs的投影矩阵设置为,camera.combined而我的Actors用覆盖draw(SpriteBatch batch)方法绘制了它们自己。我如何访问camera那里的视锥台?有没有办法让它脱离精灵?还是有另一种方法来实现平截头截锥体的淘汰?


阅读 325

收藏
2020-11-30

共1个答案

小编典典

您无需自己执行此操作。如果您将舞台与摄像机配合使用,它将自动绘制视图内部的actor。

如果要从舞台访问摄像机,只需从舞台上获取即可。 stage.getCamera()

这是从舞台内的摄像头获取视锥的方法:

Camera cam = this.stage.getCamera();
Frustum f = cam.frustum;
float h = cam.viewportHeight;
float w = cam.viewportWidth;
Matrix4 m = cam.combined; //combind projection matrix
Matrix4 m2= cam.projection; 
... 
...

从相机中,您可以获得所需的每个投影矩阵等等。

在演员内部,您可以获取舞台,在舞台中,您可以获取上面显示的所有内容。

actor.getStage().getCamera().frustum;
2020-11-30