• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

Wie bekomme ich in welchem Quadrat sich eine Position in einem Grid befindet

Tobero

Tobero

Mitglied
Ich habe einen Grid Vector2[][] und würde gerne wissen, in welchem Grid Feld sich diese Befindet. Ich hab es hin bekommen, doch es funktioniert nur solange, bis ich meine Kamera bewege. Die Position bewegt sich zwar mit der Maus mit, wenn ich sie bewege, aber wenn ich die Kamera bewege, hält es sich nicht mehr an den Grid.
Passt au8f den Grid
Passt nicht mehr, wenn ich die Kamera bewege

Mein Code für aufs Grid beziehen:
Vector2 position = new Vector2(game.getMouseManager().getMouseX(), game.getMouseManager().getMouseY());

Vector2 drawPos = new Vector2((Math.round(position.x/Tile.TILEWIDTH)*Tile.TILEWIDTH), (Math.round(position.y/Tile.TILEHEIGHT)*Tile.TILEHEIGHT));
Ich weiß, ich habe hier die Kamera Position nicht einbezogen, einfach nur aus dem Grund, weil ich nicht weiß wie.
 
Robert Zenz

Robert Zenz

Mitglied
Du musst die Kamera-Position einfach mit einrechnen, sprich x und y Werte entweder addieren oder subtrahieren, ganz simpel. Also etwas Pseudo-Code:

Java:
Vector2 currentPositionInWorld = Vector2(
        mousePosition.x - drawingOffset.x,
        mousePosition.y - drawingOffset.y);

Dann hast du deine Position innerhalb der Welt unabhaengig von der Kamera. Vorzeichen sich wahrscheinlich falsch, die verdrehe ich immer.
 
Tobero

Tobero

Mitglied
Ich hab aufgenommen, wie es jetzt mit diesem Script funktioniert. Ich weiß nicht wieso, aber sobald ich das Offset der Kamera ändere, bewegt sich das Tile kurz außerhalb des Grid und bleibt wo es war. Ich wollte eigentlich, das das Tile im einem 32*32 Grid bewegt, bei der Maus Position
 

Anhänge

  • file.zip
    451,5 KB · Aufrufe: 0
Tobero

Tobero

Mitglied
Ich hab jetzt es hingekriegt, das es au seinem Tile bleibt, aber es ist noch immer nicht auf die Maus Position abgestimmt
Mein Code für das Tile Grid Binding:
        int mouse_x = (int)game.mousePosInWorld.x;
        int mouse_y = (int)game.mousePosInWorld.y;
        
        
        double tile_u = mouse_x;
        double tile_y = mouse_y;
    
        
        
        tile_u = Math.round(mouse_x/Tile.TILEWIDTH)*Tile.TILEWIDTH-game.getGameCamera().getxOffset();
        tile_y = Math.round(mouse_y/Tile.TILEHEIGHT)*Tile.TILEHEIGHT-game.getGameCamera().getyOffset();
        
        Text.drawString(g, tile_u + ", " + tile_y, new Vector2(tile_u, tile_y), true, Color.white, Assets.fontAtlas.get("ethnocentric.ttf:24"));
    
        
        if (isValidPos)
            g.drawImage(Assets.spriteAtlas.get("HutsValidTemplate.png")[0][0], (int)(tile_u), (int)(tile_y), Tile.TILEWIDTH, Tile.TILEHEIGHT, null);
        else
            g.drawImage(Assets.spriteAtlas.get("HutsInvalidTemplate.png")[0][0], (int)(tile_u), (int)(tile_y), Tile.TILEWIDTH, Tile.TILEHEIGHT, null);
 

Anhänge

  • file.zip
    421,7 KB · Aufrufe: 1
Robert Zenz

Robert Zenz

Mitglied
Ohne es am laufen zu haben um debuggen zu koennen fallen mir spontan zwei Sachen ein: Erstens, dein Kamera Offset ist, glaube ich, nicht in ganzen Tiles. Sprich du veraenderst die Position augenscheinlich um Bruchteile von Tiles. Zweitens, musst du eventuell den Kamera Offset hinzunehmen und nicht abziehen (Vorzeichen sind mein Erzfeind)?
 
Tobero

Tobero

Mitglied
Ja, das hinzufügen hab ich schon gemacht, da ist es dann bei der Maus Position aber bei den 0-16 Positions unterschieden ist es immer etwas neben dem vorgesehenen Grid. Und das offset ändere ich immer um 7, aber würde ich es pro frame um 32 bewegen währe es viel zu schnell
 
Robert Zenz

Robert Zenz

Mitglied
Ja, das meinte ich. Du rastest die Position auf dein Grid ein, und dann rechnest du die Kamera Position hinzu, damit bist du dann natuerlich neben deinem Grid abhaengig davon wo die Kamera gerade steht. Also zuerst die Position umrechen, dann auf das Grid einrasten.
 
Robert Zenz

Robert Zenz

Mitglied
Ich dachte da an so einen Ansatz:

Java:
int mouseX = game.mousePosInWorld.x;
double mouseXTranslated = mouseX + game.getGameCamera().getxOffset();
double tileX = Math.round(mouseXTranslated / Tile.TILEWIDTH) * Tile.TILEWIDTH;

Kann mich da aber auch irren.
 
Tobero

Tobero

Mitglied
Nein, hat nicht funktioniert, ist noch immer das gleiche problem. Das Tile springt immer noch rum wenn sich die Kamera bewegt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Wie bekomme ich das Zeichen 'digit' an vorderster Stelle Allgemeine Java-Themen 4
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
D Compiler-Fehler JavaFX - Bekomme Fehlermeldungen nicht weg Allgemeine Java-Themen 31
coolian warum bekomme ich ein string index out of bounds exception Allgemeine Java-Themen 17
S Java Editor Bekomme bei der Code-Vervollständigung die Zeichen ​ Allgemeine Java-Themen 3
J wo bekomme ich Java5 her? Allgemeine Java-Themen 11
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
Exdroid BlueJ Wie bekomme ich die Ausgabe in eine TXT Datei? Allgemeine Java-Themen 2
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
S Wie bekomme ich an spezielle Glyph-Kombinationen die ein Font bereithaelt? Allgemeine Java-Themen 6
S AWT Wie bekomme ich eine Liste aller chars in einem Font? Allgemeine Java-Themen 3
S Bekomme nullwerte bei methodenaufruf in versch. Klassen Allgemeine Java-Themen 16
K Bekomme JUnit TEst nicht zum laufen :( Allgemeine Java-Themen 9
T Wie bekomme ich den Pfad ohne Dateiname? Allgemeine Java-Themen 2
F Woher bekomme ich "dlib" oder: Interpreter-Program Allgemeine Java-Themen 2
W Umlaute umwandeln bekomme nur Leerzeichen raus. Allgemeine Java-Themen 11
der JoJo [TreeSelection] wie bekomme ich alle Elemente Allgemeine Java-Themen 4
N Hilfe: Bekomme statt '>' '>' . Allgemeine Java-Themen 11
M Wie bekomme ich Threadsdazu parallel zu arbeiten? Allgemeine Java-Themen 13
E Wie bekomme ich mein Image in das Fenster Allgemeine Java-Themen 2
A Auf Java 5 umgestellt und bekomme 101 Warnungen. Allgemeine Java-Themen 5
F Wie bekomme ich die aktuelle aufgerufene Methode herraus? Allgemeine Java-Themen 6
W Umlaute in Dateien und Verzeichnissen. Bekomme Fehler Allgemeine Java-Themen 5
C JNI, wie bekomme ich das HWND zu einem JWindow oder Window? Allgemeine Java-Themen 3
C wie bekomme ich ToolTips in den Vordergrund? Allgemeine Java-Themen 3
N Bekomme NIE ein TRUE obwohl ich es bekommen müsste :( Allgemeine Java-Themen 10
Z Woher bekomme ich Icon's? Allgemeine Java-Themen 2
A wie bekomme ich Applikation zum Laufen Allgemeine Java-Themen 3
B Wie bekomme ich den Wert aus der For-Schleife? Allgemeine Java-Themen 5
S Wie bekomme ich den keySet einer inneren HashMap?? Allgemeine Java-Themen 4
M Windows 98 - Mit welchem JDK (Version) kann noch Programm dafür erstellt werden Allgemeine Java-Themen 6
H Aus welchem Land stammt eine URL? Allgemeine Java-Themen 5
R Synchronized - auf welchem Objekt Allgemeine Java-Themen 16
S Mit welchem Firefox browser laeuft Java4 ? Allgemeine Java-Themen 2
B in welchem verzeichnis liegen alle installierten klassen? Allgemeine Java-Themen 6
J Erkennen aus welchem Pfad das Jar gestartet wurde Allgemeine Java-Themen 6
K Woher weiss ein Objekt, zu welchem anderen Objekt es gehört? Allgemeine Java-Themen 8
G Mit welchem Betriebssystem programmiert ihr Java und wofür? Allgemeine Java-Themen 11
S mit welchem befehl kann ich mein programm autom. schließen Allgemeine Java-Themen 3
I Mit welchem Tag fängt der Monat an ? Allgemeine Java-Themen 2
M Magisches Quadrat Allgemeine Java-Themen 12
K Quadrat in einem Bild erkennen Allgemeine Java-Themen 33
E Laufzeitproblem: magisches Quadrat Allgemeine Java-Themen 36
B Magisches Quadrat per Backtracking Allgemeine Java-Themen 4
H Magisches Quadrat Allgemeine Java-Themen 6
G Mag Quadrat Allgemeine Java-Themen 4
X magisches Quadrat Allgemeine Java-Themen 6

Ähnliche Java Themen

Anzeige

Neue Themen


Oben