Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

11

28.06.2017, 11:42

Deine Zellen werden also weiß umrandet und sollen am Ende die roten Punkte in ihrer Mitte haben? Ok, check soweit. Kannst du mal einen Screenshot machen der zeigt wie das ganze aussieht wenn du die Kamera nicht bewegst?

Siehe Anhang
Du siehst also, dass die Map ab der Bildschirm-Mitte nach oben rechts gezeichnet wird.

Das war jetzt ehrlich gesagt auch nicht ganz die Verbesserung, die ich im Kopf hatte. Damit greifst du auf die Interna eines Tiles zu. Warum gibst du einem Tile nicht eine Draw-Funktion und lässt es das Sprite selbst zeichnen? Da muss der Aufrufer überhaupt nicht wissen, wie ein Tile intern funktioniert.

Okay danke für den Tipp.

Eigentlich bin ich jetzt mehr verwirrt als vorher. Eine TileMap besteht üblich ja aus Tiles. Die sind bei dir aber angeblich nur 3x3 Pixel groß, was extrem winzig ist. Oder sind sie 15x15 groß? Dann verstehe ich aber nicht, was eine Zelle sein soll und wieso die TileMap aus Zellen und nicht aus Tiles besteht. Sollte das dann nicht eine Zellmap sein?

Das Problem ist, dass es beides im Prinzip Tiles sind. Auch wenn das 3x3 große nicht in der Map integriert ist. Deshalb habe ich die eigentlichen 15x15 "Tiles" Zellen genannt, da diese Textur mehr einer Zelle ähnelt, als ein roter Punkt ;)
»cojo2015« hat folgendes Bild angehängt:
  • Unbenannt3.PNG

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

12

28.06.2017, 11:55

Gut, deine Benennung ist nicht optimal aber ich denke uns ist klar worum es geht. Du hast viele Zellen welche weiß umrandet sind und zusätzlich soll sich in jeder Zelle ein roter Punkt befinden. Ich hatte es glaube ich schon gesagt, nimm mal die Kamera aus dem Code heraus und guck ob sich das ganze verändert. Kann es sein dass du die roten Punkte nicht durch die Kamera renderst?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

13

28.06.2017, 12:27

Gut, deine Benennung ist nicht optimal aber ich denke uns ist klar worum es geht. Du hast viele Zellen welche weiß umrandet sind und zusätzlich soll sich in jeder Zelle ein roter Punkt befinden. Ich hatte es glaube ich schon gesagt, nimm mal die Kamera aus dem Code heraus und guck ob sich das ganze verändert. Kann es sein dass du die roten Punkte nicht durch die Kamera renderst?


Ja das stimmt, dass du es schon einmal geschrieben hast.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Override
    public void render(float delta) {
        // TODO Auto-generated method stub

        // Handle the user's input
        handleInput();
        
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        
        //renderer.setView(camera);
        renderer.render();
        
        batch.begin();      
        for (int i = 0; i < tileList.size(); i++) {
            tileList.get(i).draw();
        }       
        batch.end();

(Anhang)

Dann siehst du nur unten links 2 Zellen.
»cojo2015« hat folgendes Bild angehängt:
  • Unbenannt4.PNG

Jar

Treue Seele

Beiträge: 197

Wohnort: Lübeck

Beruf: Softwareentwickler

  • Private Nachricht senden

14

28.06.2017, 12:42

Debug einfach mal deinen Code an dieser Stelle und schaue ob die x und y Werte alle richtig sind.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
        // Go through all tiles
        for (int x = 0; x < tileLayer.getWidth(); x++) {
            for (int y = 0; y < tileLayer.getHeight(); y++) {
                //Cell cell = tileLayer.getCell(x, y);
                
                // Create a new "tile"
                Tile tile = new Tile();
                tile.setPosition((15 * x) / 2 - tile.getWidth() / 2, (15 * y) / 2 - tile.getHeight());
                
                // Add the tile to the list
                tileList.add(tile);
            }
        }

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

15

28.06.2017, 13:25

Das ist ja ohne Kamera schon falsch. Ich würde vorschlagen du löst erst mal das Problem und guckst dann wie du die Kamera integriert bekommst. Was mich zum Beispiel wundert sind die Positionen die du deinen Tiles gibst. Auch wenn ich grad nicht mal genau weiß ob das jetzt die weißen oder die roten Versionen sind. Auch da würde ich vielleicht vorschlagen, da die weißen Parts die eigentlichen Zellen darstellen, bring erst mal die Zellen ans laufen. Wenn die Zellen korrekt positioniert werden kümmerst du dich um die roten Texturen.
Wie soll das am Ende denn eigentlich sein. Ein roter Punkt ist nur eine Textur in so einer Zelle? Soll die Zelle diesen Punkt kennen? Soll die Zelle diesen Punkt möglicherweise sogar besitzen? Dann sollte es ja eigentlich kein großes Problem sein oder? Die Zelle könnte den roten Punkt direkt mit rendern, wobei die Zelle ihre eigene Position kennt und somit auch die Position des roten Punkts.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

16

28.06.2017, 14:32

Das ist ja ohne Kamera schon falsch. Ich würde vorschlagen du löst erst mal das Problem und guckst dann wie du die Kamera integriert bekommst. Was mich zum Beispiel wundert sind die Positionen die du deinen Tiles gibst. Auch wenn ich grad nicht mal genau weiß ob das jetzt die weißen oder die roten Versionen sind. Auch da würde ich vielleicht vorschlagen, da die weißen Parts die eigentlichen Zellen darstellen, bring erst mal die Zellen ans laufen. Wenn die Zellen korrekt positioniert werden kümmerst du dich um die roten Texturen.
Wie soll das am Ende denn eigentlich sein. Ein roter Punkt ist nur eine Textur in so einer Zelle? Soll die Zelle diesen Punkt kennen? Soll die Zelle diesen Punkt möglicherweise sogar besitzen? Dann sollte es ja eigentlich kein großes Problem sein oder? Die Zelle könnte den roten Punkt direkt mit rendern, wobei die Zelle ihre eigene Position kennt und somit auch die Position des roten Punkts.


Interessante Idee, dass jede Zelle seinen eigenen roten Punkt kennt... Ich probiere es mal, vllt. lösen sich dadurch auch andere Probleme :)

Werbeanzeige