libgdx Split Texture in andere Texturen

T

Tekkkz

Neues Mitglied
1
Hallo!

WIe kann ich meine Haputtextur, die alle Texturen enthält splitten in einzel Texturen, zb. Hintergrund oder Charakter?
 
Eine Textur in viele Teilen => Paint ^^.

Nein, im Ernst, du solltest dich ein wenig genauer ausdrücken.
 
Na eine Große Splitten, mappen, also wie mit Sprites aus einer
 
Ich bin mir immer noch nicht sicher, ob ich dich richtig verstehe, aber ich denke was du suchst ist:
Texturepacker
 
Ne, anders: Ich habe 5 Sprites...Wie kann ich die zu ner Animation zusammenfügen?
 
Genau! ABer meine Texturen sind net in einem einzelner animations-textur
WIe mache ich das dann?
 
Naja, ich weiß nicht genau ob libgdx für diesen Fall eine Klasse im Framework bereitstellt.

Falls nicht gibt es 2 Optionen
  • Zur 2. Animation am Ende der ersten wechseln
  • Zusehen, dass alle Bilder in eine Textur passen

Letzteres ist die Option, die du machen möchtest. Ersteres ist schlecht.
 
ICh habe ja eine Datei, wo drin sind: Hintergrund, "Game-Over", Münze, und die einzelbilder der Animation..wie kann ich jz meine animation bekommen?
 
Das ist doch im Wiki beschrieben. Mit TextureRegion kannst du angeben, wo die Animation in deiner Textur liegt.
 
Kannst du mir das erklären oder nen link senden?
 
Im Tutorial befindet sich der Quellcode für einen Animator.

Hier ein Auszug:
PHP:
    public void create() {
        walkSheet = new Texture(Gdx.files.internal("animation_sheet.png")); // #9
        TextureRegion[][] tmp = TextureRegion.split(walkSheet, walkSheet.getWidth()/FRAME_COLS, walkSheet.getHeight()/FRAME_ROWS);              // #10
        walkFrames = new TextureRegion[FRAME_COLS * FRAME_ROWS];
        int index = 0;
        for (int i = 0; i < FRAME_ROWS; i++) {
            for (int j = 0; j < FRAME_COLS; j++) {
                walkFrames[index++] = tmp[i][j];
            }
        }
        walkAnimation = new Animation(0.025f, walkFrames);      // #11
        spriteBatch = new SpriteBatch();                // #12
        stateTime = 0f;                         // #13
    }

    @Override
    public void render() {
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);                        // #14
        stateTime += Gdx.graphics.getDeltaTime();           // #15
        currentFrame = walkAnimation.getKeyFrame(stateTime, true);  // #16
        spriteBatch.begin();
        spriteBatch.draw(currentFrame, 50, 50);             // #17
        spriteBatch.end();
    }

Wichtig für dich ist die Methode create() da sie die einzelnen Bilder mittels TextureRegions aus einer Textur zieht (Hier ist auch gut zu sehen, dass man auch mehrere Texturen verwenden könnte)

Du brauchst ein "Animation" Objekt, welches du mit einem Array von TextureRegions erstellen kannst.
Wo die einzelnen Bilder deiner Animation in deiner Textur liegen, weisst nur du allein. Du musst lediglich die Regions auf deiner Textur festlegen, diese als Objekt anlegen und in ein Array legen welches du dann zum Erstellen des "Animation"-Objektes verwendest.
 
  • Danke
Reaktionen: Tekkkz
Und wie kann ich ne Animation machen aus meheren Sprites? Anders geht es leider nicht, also nicht mit TextureRegion, da die unregelmäßig durcheinander in meiner Textur sind
 
Trotzdem mit TextureRegions.

Das einzige was du nicht machen kannst, ist deine Textur so durch iterieren, wie es im Beispiel passiert.
Du musst jede Region (also jedes Bild) einzeln erstellen.
(Es sei denn die Platzierungen deiner Animationsbilder unterliegen einem anderen Algorithmus)

TextureRegions ist doch lediglich eine Region auf deiner Textur ;)
 
Kannst du mir nochmal erklären wie ich solche region setzte?
 
Sorry, bin gerade unterwegs. Schau dir die Klasse TextureRegion mal an. Das ist nicht so schwierig zu verstehen.
 
Ist es so richtig:

PHP:
public static TextureRegion[] region_bird;
public static TextureRegion region_current_bird;

texture_map = new Texture(...);
region_bird[0] = new TextureRegion(texture_map, x, y, x2, y2);
region_bird[1] = new TextureRegion(texture_map, x, y, x2, y2);

animation_bird = new Animation(0.2F, region_bird);

ist das richtig?
 
Sieht erstmal gut aus.
 
Nein, der Compiler Meldet bei
PHP:
region_bird[0] = new TextureRegion(texture_map, x, y, x2, y2);
einen fehler
 
Weil wahrscheinlich vergessen hast Speicher für das Array zu erstellen.
Ich denke du solltest dich intensiver mit Java beschäftigen.
 

Ähnliche Themen

D
Antworten
23
Aufrufe
2.383
Data2006
D
OnkelLon
Antworten
13
Aufrufe
1.921
OnkelLon
OnkelLon
S
Antworten
9
Aufrufe
1.151
swa00
swa00
Zurück
Oben Unten