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,基本的数学错误是我存在的祸根(:/)。它仍然只渲染一个精灵,是否有任何理由可以这样做?
答案 0 :(得分:0)
(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是关闭屏幕,我建议取下最后一个屏幕高度,也许是前两个屏幕,因为只要你超过1/2的敌人,他们也会在屏幕上渲染,所以:< / p>
(i * screenHeight / (float) enemies.length);
并使其更具可读性
screenHeight * (i / (float) enemies.length);
表示您正在根据数组中的敌人数量缩放screenHeight