2015-02-08 18 views
0

batch.draw (icon [i] .getKeyFrame (elapsedTime, true), 1700, (screenHeight * (i/enemy.length))); Я пытаюсь использовать динамический массив анимаций для цель создания ряда вражеских спрайтов в игре RPG. На данный момент мне кажется, что я могу приспособить атлас к массиву анимации, но когда я иду рисовать, появляется только один, хотя он находится в том месте, которое я описал, поэтому я считаю, что остальные визуализируются, но по какой-то причине не оставайтесь на экране. В моей инициализации:Создание анимации клонирования в Libgdx

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)); 
    } 

Спасибо за то, Джонатон основные математические ошибки являются Bane моего существования (: /). Его все еще только показывая один спрайт, есть ли какая-то причина, почему он может это сделать?

ответ

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

, вероятно, не делать то, что вы думаете, если я = 0 (для первого врага), предположим, ScreenHeight что-то вроде 1000 и у вас есть 16 врагов:

2*0*1000/16*1000 = 0 

тогда, когда я = 1

2*1*1000/16*1000 = 125000 

125000 на оси у wayyy от экрана, я рекомендую снимать последнюю ScreenHeight, и, возможно, первые 2, потому что как только вы превысите 1/2 врагов они делают от экрана, так что :

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

и сделать его еще более удобным для чтения

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

, который показывает, что вы масштабирования ScreenHeight на основе количества врагов в массиве

+0

редактировать код, чтобы изменить эту строку, но Я все равно получаю один и тот же отображаемый экран, один спрайт появляется с правильным значением x, и это похоже на это. Есть ли другие ошибки, которые вы можете увидеть? – Michael

+0

Кажется, что он должен работать, может быть, просто вывести значение enemy.length и screenHeight в журнал и посмотреть, являются ли они sain. не мог повредить, чтобы увидеть значение 'screenHeight * (i/enemy.length)', выведя его в цикле, а также –

+0

. Я отредактировал ответ, вам нужно наложить враг.length на float, так как он возвращает int –

Смежные вопросы