在 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);
这表明您正在根据数组中敌人的数量缩放屏幕高度
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);
这表明您正在根据数组中敌人的数量缩放屏幕高度