在Libgdx中创建克隆动画

时间:2015-02-08 19:08:54

标签: android 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,基本的数学错误是我存在的祸根(:/)。它仍然只渲染一个精灵,是否有任何理由可以这样做?

1 个答案:

答案 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