在 Libgdx 中创建克隆动画

Creating Clone Animations in Libgdx

batch.draw(icon[i].getKeyFrame(elapsedTime, true), 1700,(screenHeight * (i / enemies.length)));我正在尝试使用动态动画数组为了在 RPG 游戏中创建大量 Enemy Sprites。目前,我似乎能够将图集放入动画数组,但是当我去绘制它们时,只有一个出现,虽然它在我描述的地方,所以我相信其他人正在渲染但是出于某种原因不要停留在屏幕上。 在我的初始化中:

 spriteatlas = new TextureAtlas(Gdx.files.internal("spritesheet.atlas"));

    backgroundatlas = new TextureAtlas(Gdx.files.internal("sprite.atlas"));

    //List<Animation> icon = new ArrayList<Animation>(enemies.length);
    icon = new Animation[enemies.length];
    for (int i =0;i<enemies.length;i++)
        icon[i] = new Animation(1/15f, spriteatlas.getRegions());
    background = new Animation(1/2f, backgroundatlas.getRegions());

抽中

elapsedTime += Gdx.graphics.getDeltaTime();
    batch.draw(background.getKeyFrame(elapsedTime, true), 0, 0);
    for (int i = 0; i<enemies.length;i++) {
       batch.draw(icon[i].getKeyFrame(elapsedTime, true), 1700,(2*i*screenHeight/enemies.length*screenHeight));
    }

感谢 Johnathon,基本的数学错误是我生存的祸根 (:/)。它仍然只渲染一个精灵,有什么理由可以这样做吗?

(2*i*screenHeight/enemies.length*screenHeight));

可能不会按照你的想法去做,如果 i = 0(对于第一个敌人),假设 screenHeight 大约是 1000 并且你有 16 个敌人:

2*0*1000/16*1000 = 0

然后当 i = 1

2*1*1000/16*1000 = 125000

y 轴上的 125000 离屏幕很远,我建议去掉最后一个 screenHeight,也许还有前 2 个,因为一旦超过 1/2 的敌人,它们也会渲染出屏幕,所以:

(i * screenHeight / (float) enemies.length);

并使其更具可读性

screenHeight * (i / (float) enemies.length);

这表明您正在根据数组中敌人的数量缩放屏幕高度