java - 从舞台上移除 Actor ?

标签 java libgdx draw game-engine flappy-bird-clone

我使用 LibGDX 并在我的游戏中只移动相机。昨天我创建了一种在我的游戏中绘制地面的方法。我正在尝试制作 Flappy Bird 的克隆版,但我在绘制屏幕上移动的地面时遇到了问题。在每次渲染调用中,我都将一个新的 Actor 添加到 Stage,但几次之后绘图就不再流畅了。每秒帧数下降得非常快。有没有其他方法可以在游戏中划清界限?

最佳答案

如果我没看错的话,你的问题是一旦 Actor 离开屏幕,他们仍在被处理并导致延迟,你希望他们被删除。如果是这种情况,您可以简单地遍历舞台上的所有 Actor ,将他们的坐标投影到窗口坐标,并使用它们来确定 Actor 是否在屏幕外。

for(Actor actor : stage.getActors())
{
    Vector3 windowCoordinates = new Vector3(actor.getX(), actor.getY(), 0);
    camera.project(windowCoordinates);
    if(windowCoordinates.x + actor.getWidth() < 0)
        actor.remove();
}

如果 actors 在窗口中的 x 坐标加上它的宽度小于 0,则 actor 已经完全滚出屏幕,可以被移除。

关于java - 从舞台上移除 Actor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22121467/

相关文章:

java - 安卓 : How to get callback from custom method?

java - 将 jar 与 war 联系起来

java - 类扩展了 libGDX 中的 inputAdapter,但触摸无法识别

c# - 如何在 Image(WPF) 中的图像上绘制一个点,带有事件的运行时

javascript - 使用橡皮擦时保留背景图像

objective-c - 在 NSTextView 中绘制多个光标

java - JUnit MethodRule 只测试一行

java - 按home键时如何防止onPause()?

c++ - LibGDX + Box2D 旋转

java - 在选择可用方法时如何在intelliJ中弹出方法定义窗口?