2014-01-09 4 views
3

Мы программируем игру на Android с помощью libgdx. Это Doodle Jump.Transparency Libgdx Android

В какой-то момент игры мы хотим, чтобы плиты постепенно исчезали, уменьшая прозрачность изображения. Мы много тестировали, но ничего не получилось.

batch.begin(); 
batch.draw(picture, posX, posY, width, heigth); 
bach.end(); 

Мы также пытались с этим, но он не работает:

batch.setColor(1, 0, 0, 1); 
+2

Последний аргумент setColor - это альфа, вы пробовали ниже 1.0f правильно? Поскольку alpha = 1 является полной прозрачностью – taytay

+0

Я пробовал это, но это не сработало:/ – user3178291

ответ

2

SpriteBatch#setColor Работы: вы не изменили альфу (последнее значение), вот почему она не работала для вас.

batch.begin(); 
batch.setColor(1, 1, 1, 0.5F); //0.5F is the alpha value that you want (0-1) 
batch.draw(picture, posX, posY, width, heigth); 
batch.setColor(1, 1, 1, 1); //change it back to full opacity white, for the other objects to render correctly 
bach.end(); 

Если вы начнете использовать Sprite с, mrzli answer это путь.

+0

Спасибо вам большое, он работает: D !!! Я считаю, что моя ошибка заключалась в том, что я не поставил этот символ «batch.setColor (1, 1, 1, 1)»; – user3178291

1

Вы можете использовать Sprite, а затем установить альфа, используя этот метод:

public static void setSpriteAlpha(Sprite sprite, float alpha) { 
    Color c = sprite.getColor(); 
    sprite.setColor(c.r, c.g, c.b, alpha); 
} 

это работает конечно, поскольку я использовал его в своем клоне Doodle Jump.

Вот несколько примеров использования:

batch.begin(); 
sprite.setBounds(posX, posY, width, height); 
setSpriteAlpha(sprite, 0.5f); 
sprite.draw(batch); 
batch.end(); 

Если это поможет, вы можете найти исходный код для всей игры here, и использовать его в значительной степени так, как вы хотите (MIT лицензии). Это просто и, вероятно, не очень весело, но оно завершено.

Вы также можете проверить результат на Google Play.

+0

Не нужно использовать метод для получения цвета спрайта для изменения его альфы, вы можете просто использовать [Sprite # setAlpha] (http: // libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Sprite.html#setAlpha%28float%29) – Lestat

+0

@Lestat Вы правы, я даже не могу вспомнить, почему я начал делать это так. Думаю, я не видел этого метода ... – mrzli

+0

Большое спасибо за вашу помощь! Я попробую ваше решение;) PS: Я загрузил вашу игру в Play Маркете, ваша игра прекрасна! Вы проделали хорошую работу ^^ – user3178291