2012-06-01 12 views
6

Chcę renderować efekt cząsteczkowy w 3D za pomocą współrzędnej Z. Próbowałem wdrożyć własny ParticleEffect przy użyciu Kalkomanie zamiast Sprites bez powodzenia.libgdx system cząstek współrzędnych Z

Czy istnieje inny sposób renderowania ParticleEffect przy użyciu współrzędnej Z? Może poprzez manipulację transformacją Matrix of SpriteBatch?

Aktualizacja:

kod działa

// update projection each frame since my camera is moving 
spriteBatch.setProjectionMatrix(camera3d.projection); 

for (ParticleEffect effect : effects){ 
    spriteBatch.setTransformMatrix(camera3d.view); 
    spriteBatch.getTransformMatrix().translate(x,y,z); // different for each effect 
    spriteBatch.getTransformMatrix().scale(0.1f,0.1f,0.1f); //optional 
    spriteBatch.begin(); 

    effect.draw(spriteBatch, delta); 

    spriteBatch.end(); 
    spriteBatch.getTransformMatrix().idt(); 
} 
+0

Czy twoja gra 2d lub 3d? Co oznacza "używanie współrzędnej Z"? Że cząstki renderują się w różnych rozmiarach na ekranie? Czy możesz pokazać zrzut ekranu z tego, co masz? –

+0

Moja gra jest w 3d, ale ParticleEffect libgdx jest dla 2d (używa tylko X i Y, bez Z), ponieważ używa Sprites (2d) wewnętrznie i SpriteBatch do rysowania. Chcę, aby efekt pojawiał się częściowo za bliskimi obiektami i przed odległymi obiektami z uwzględnieniem perspektywy. – kromit

Odpowiedz

9

Jeśli efekt 3D jest efekt paralaksy, czyli twoje cząstki twarz aparat perpendicularily można rzeczywiście ustawić macierz transformacji SpriteBatch

batch.getTransformMatrix().idt().translate(0, 0, z); 
batch.begin(); 
... do your rendering here 
batch.end(); 
// reset the matrix, so you can use the batch for other stuff 
batch.idt(); 

Aby uzyskać efekt perspektywy, należy również użyć rzutowania perspektywicznego. Najłatwiejszym sposobem na sprostanie temu wymaganiu jest użycie PerspectiveCamera zamiast OrthographicCamera.

+0

dziękuję, to była ostatnia wskazówka! zaktualizowałem to pytanie za pomocą działającego kodu. dziękuję za libgdx przy okazji! – kromit

Powiązane problemy