【问题标题】:Android libgdx falling objectsAndroid libgdx 坠落物体
【发布时间】:2016-03-28 08:30:44
【问题描述】:
//this is the UPDATE method
public void update(float delta) {
    handlingInput();

    deltaTime = Gdx.graphics.getDeltaTime();
    timer += deltaTime;
    if (timer >= 1) {
        buttons.add(new Buttons());
        timer -= 1;
    }

    cam.update();

    Iterator<Buttons> butts = buttons.iterator();
    while(butts.hasNext()) {
        Buttons button = butts.next();
        button.update(delta);
        if (button.getPosition().x > Gdx.graphics.getWidth()) {
            butts.remove();
        }
    }
}

这是渲染方法

public void render(SpriteBatch sb) {
    sb.setProjectionMatrix(cam.combined);
    sb.begin();
    for (Buttons butts: buttons) {
        sb.draw(butts.getButTexture(), butts.getPosition().x, butts.getPosition().y);
    }
    sb.end();
}

这是坠落物体的更新

public void update(float delta) {
    position.x += (int) (300 * delta);
}

我让坠落的物体乘以我的增量时间,所以它是否滞后并不重要。我也试过浮动,但问题是它并不顺利,它只是每隔几毫秒就会滞后一次。我是新手,我不确定自己缺少什么!?

【问题讨论】:

  • 什么是按钮类?我的猜测是,实例化它并将一些丢到 GC 会导致你打嗝。您是否在 Buttons 构造函数中加载纹理?
  • 我有一个在创建按钮时随机生成的纹理,因此每个按钮都有自己的纹理,该纹理已在控件中设置!那有什么问题吗?因为我在较新的手机上尝试过它,它在桌面上也能正常工作......那么我应该如何为每个按钮加载不同的纹理?
  • 在 create 方法中加载您需要的所有纹理,并让它们可供按钮参考。然后你就不会在动画运行时加载它们,这会导致卡顿。
  • 那么乱七八糟的事情仍然会发生,我做到了。我在create中创建了一个纹理数组,将其传递给playState,这是我的游戏逻辑所在,然后每次创建按钮时,它都会在构造函数中传递纹理数组
  • 你能分享你的Buttons类的代码吗?

标签: android object libgdx smooth


【解决方案1】:

您是否尝试过将sb.setProjectionMatrix(cam.combined); 移出渲染方法?据我所知,它可以简单地调用一次,当你创建 SpriteBatch 时,它可能会耗费资源并使你的游戏变得迟钝(这可能不是原因,但我找不到任何其他可能的方法)。

【讨论】:

  • 如果您想向OP提出疑问,请发表评论。仅当您确定要求和问题时才发布答案
  • 试图删除它,同样,这很奇怪,因为运动看起来很流畅,但每隔几次“时间”它就会滞后......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
相关资源
最近更新 更多