Frage von Wissenswert91, 29

Wie aus Shape-Array x & y-Position der einzelnen Shapes ermitteln?

Hallo,

ich habe ein 2 dimensionales Shape-Array, es handelt sich hierbei um einzelne kleine Hitboxen in Rechteckform.

Nun möchte ich einige Kollisionsabfragen machen. Dazu benötige ich die x-Position der einzelnen Shapes. Leider weiß ich nicht wie ich das aus dem Array abfragen kann.

if(editor.getarrayHitboxen()[i][j].x+25 > spielerHitbox.x){
    }

Mit "x" und "getX()" funktioniert es nicht, obwohl er mir "getX()" als Lösung anbietet. In meinem Programm werden die Hitboxen in einer eigenen Klasse gezeichnet und zwar mit:

hitbox = new Rectangle(25*j, 25*i, 25, 25);

Da ja "25*j" eingentlich meine x-Position der einzelnen Hitboxen ist, dachte ich mir ich schreibe eine getter-Methode "getX-Pos()" um diesen Wert in der anderen Klasse abfragen zu können. Funktioniert leider auch nicht, da ich nicht auf diese Methode mit:

if(editor.getarrayHitboxen()[i][j].getX-Pos() > spielerHitbox.x){
    }

zugreifen kann.

Wie kann ich nun aus dem Shape-Array die x & y-Positionen der Shapes ermitteln??

Hinweis: "i & j" sind die Zählervariablen der beiden for-Schleifen. Die es einmal zum abfragen der Kollision und einmal zum zeichnen der Shapes gibt.

MfG und DANKE!

Antwort
von EightSix, 18

Sicher dass die Methode "getX-Pos" public ist?

Ein Bindestrich in einer Bezeichnung ist eigentlich ein NoGo.

Kommentar von Wissenswert91 ,

Ja, die Methode ist public.

Habe es auf "getXPos" geändert, bringt aber nichts.

Wie gesagt, die getXPos-Methode wird mir nicht angezeigt.

Hier die Fehlermeldung:

Tue May 31 15:09:51 CEST 2016 INFO:Slick Build #237
Tue May 31 15:09:51 CEST 2016 INFO:LWJGL Version: 2.9.2
Tue May 31 15:09:51 CEST 2016 INFO:OriginalDisplayMode: 1366 x 768 x 32 @60Hz
Tue May 31 15:09:51 CEST 2016 INFO:TargetDisplayMode: 500 x 500 x 0 @0Hz
Tue May 31 15:09:52 CEST 2016 INFO:Starting display 500x500
Tue May 31 15:09:52 CEST 2016 INFO:Use Java PNG Loader = true
WARNING: Found unknown Windows version: Windows 7
Attempting to use default windows plug-in.
Loading: net.java.games.input.DirectAndRawInputEnvironmentPlugin
Tue May 31 15:09:52 CEST 2016 INFO:Found 0 controllers
Tue May 31 15:09:52 CEST 2016 ERROR:Unresolved compilation problem:
The method getXPos() is undefined for the type Shape

java.lang.Error: Unresolved compilation problem:
The method getXPos() is undefined for the type Shape

at map2.Hauptfenster.update(Hauptfenster.java:90)
at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:663)
at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:411)
at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:321)
at map2.Hauptfenster.main(Hauptfenster.java:129)
Tue May 31 15:09:52 CEST 2016 ERROR:Game.update() failure - check the game code.
org.newdawn.slick.SlickException: Game.update() failure - check the game code.
at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:669)
at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:411)
at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:321)
at map2.Hauptfenster.main(Hauptfenster.java:129)

Kommentar von EightSix ,

Warum definierst du ein Shape Array und kein Rectangle Array?

Bei Shape kannst du mitels getBounds().getX() zugreifen. Oder halt Y, Height, Width statt X.

Ich hab es vorhin so gelesen dass du für deine Hitboxen eine eigene Klasse hast und in dieser eine Methode definierst. Aber du verwendest ja nur Rectangle und im Array Shape.

Kommentar von Wissenswert91 ,

Ich habe shape verwendet, da ich in weiterer folge noch Gegner programmieren möchte die möglicherweiße ein circle als Hitbox verlangen.

MfG

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten