2015-04-20 2 views
0

Я реализую это правильно? У меня проблемы с направлением моего персонажа, но государственный менеджер работает правильно. Я не уверен, что это проблема. Когда я сконструирован, у меня есть мой игрок, который смотрит прямо влево.Libgdx: .Flip() внутри цикла for

У меня есть два массива для правой и левой анимации внутри моего менеджера активов. Исходные изображения обращены вправо, я объявляю этот массив, а затем переворачиваю одно и то же изображение в левом массиве. Оставляет ли левый массив правильный?

int idleRIndex = 1; 
      TextureRegion[] idleRight = new TextureRegion[3]; 
      for (int i = 0; i < idleRight.length; i++) 
      { 
       idleRight[i] = rubenSprite.findRegion("iframe" + idleRIndex); 
       idleRIndex++; 
      } 
      rubenIdleRight = new Animation(0.2f, idleRight); 

int idleLIndex = 1; 
       TextureRegion[] idleLeft = new TextureRegion[3]; 
       for (int i = 0; i < idleLeft.length; i++) 
       { 
        idleLeft[i] = rubenSprite.findRegion("iframe" + idleLIndex); 
        idleLeft[i].flip(true, false); 
        idleLIndex++; 
       } 
       rubenIdleLeft = new Animation(0.2f, idleLeft); 

ответ

2

Кажется, что после испытания. findRegion("iframe" + idleLIndex) и справа возвращают одну и ту же ссылку на объект. Поэтому я думаю, что флип для левых также повлияет на право. Возможно, вы можете создать новый объект TextureRegion из атласа. Это не должно быть слишком тяжело. Попытка:

idleLeft[i] = new TextureRegion(rubenSprite.findRegion("iframe" + idleLIndex)); 

Тогда флип не должен влиять на право больше.

+0

Вы, как мой разбойник libgdx! еще раз спасибо. – BIW

+0

@Quallenmann Какой из них лучше? Переверните «на лету» при рисовании или подготовке перевернутого TextureRegion, как ваш ответ, который означает его дублирование. – Kenjiro

+0

Если вы имеете в виду под «на лету» что-то вроде этого. [SpriteBatch.draw] (http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/SpriteBatch.html#draw-com.badlogic.gdx.graphics.Texture-float- float-float-float-int-int-int-int-boolean-boolean-), где вы можете перевернуть изображение с помощью некоторого булева, тогда было бы лучше, если вы сделаете это «на лету». Причина, если заданы флип-булевы, эта функция меняет только текстур-координаты (если flippedX с u1 и u2 меняются местами, если они переворачиваются v1 и v2), которые не так много вычисляются, а используемая память меньше. – Quallenmann

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