Mobile Footer Layer

Java Figur in JFrame verfolgen

cl0udt

Lt. Junior Grade
Registriert
Sep. 2008
Beiträge
508
Hallo zusammen,

hab ein JFrame und ein bewegliches viereck dadrin auf einer Graphics2D-Oberfläche. Wie kann ich denn jetzt das viereck so fokusieren, dass ich ihm mit "der kamera" folge? Finde leider keine tutorials oder links dazu im internet, weiß auch gar net wirklich nach was ich suchen soll.

Danke schonmal.
 
Verstehe die Frage leider noch nicht so ganz. Willst du, das das viereck immer im zentrum bleibt und der rest bewegt sich? dann bräuchtest du das viereck nicht bewegen, sondern eben nur den hintergrund.
 
Ich glaub ich verstehe nicht ganz was du erreichen möchtest. Kannst du das mal anhand eines Screenshots erklären?
 
Ok sorry, wenn ich mich undeutlich ausgedrückt habe.
Also es soll mal ein Spiel werden wenns fertig ist.
Der Spieler soll immer im Mittelpunkt der Karte bleiben, wenn er sich fortbewegt, wie shagg es sagt.
Gibts außer den hintergrund zu bewegen vll noch ne andere möglichkeit? vll irgendne methode vom frame oder so, die ein objekt verfolgt und das automatisch alles macht?
 
Kenne mich mit Graphics2D nicht sonderlich aus, aber ich würde einfach mal sagen, als einfache Funktion gibt es sowas nicht. Für Java Games würde ich dir mal Slick2D ans Herz legen.
 
Naja, ich würde eigentlich nicht den Hintergrund bewegen, sondern immer nur den Ausschnitt des Spielfelds zeichnen, der um den Spieler in dem entsprechenden Abstand drumherum ist. Am Rand dann z.B. Schwarz stattdessen.
Wenn du dein Spielfeld z.B. als 2D Array modelliert hast, und der sichtbare Bereich ist der Einfachheit halber 3x3, dann zeichnest du immer die Arrayelemente die +/- 1 um die Spielerposition im 2D Array liegen.
 
@shagg
ich wills halt von grundauf alles selbst proggen, ohne jmonkeyengine, slick2d o.ä.
Naja dann muss ich wohl auch in kauf nehmen, dass ich das jetzt umständlich machen muss :D

@DjNDB
Das spielfeld ist bei mir halt kein array, sondern einfach nur ein .jpg hintergrund.
Ansonsten wäre das natürlich ne gute idee. Bei so viel code, wie ich jetzt schon habe, will ich das halt net alles nochmal ändern müssen.
 
cl0udt schrieb:
Bei so viel code, wie ich jetzt schon habe, will ich das halt net alles nochmal ändern müssen.

Hehe, das ist kein Grund. Ich habe damals die GUI für ein Spiel 3 mal neu programmiert... Letztlich kommt es darauf an, was am besten alle Anforderungen erfüllt, und das weiß man nicht immer von Anfang an.

So wie ich mir das momentan vorstelle, müsste man dann eben abhängig von der Spielerposition ausrechnen welchen Bereich des Hintergrundbilds man darstellen muss.
Ein Screenshot wäre aber trotzdem gut, um eine konkretere Vorstellung zu bekommen, was du eigentlich machst. Momentan kann ich vieles nur vermuten.
 
Hehe, naja es geht eh schleppend voran, da ich neben dem studium eigentlich keine zeit habe, deswegen würds mich schon sehr ärgern, wenn ich so ne große änderung nochmal durchführen müsste. Auf dem Screenshot kann mans halt net sehn, aber gibt schon kollision, mapwechsel, "NPCs" lassen sich ansprechen...bin halt nur kein atemberaubender grafiker :D

Screenshot
 
cl0udt schrieb:
bin halt nur kein atemberaubender grafiker :D

Geht mir ähnlich ^^ Ich entwickele lieber die Schichten darunter.

Okay, der Hintergrund ist tatsächlich noch etwas nichts sagend. Soll der Hintergrund später Einfluss auf den Spieler haben, also Objekte enthalten, oder ist der nur Dekorativ?

Es könnte auch nützlich sein zu wissen was das für ein Spiel werden soll.
 
Hmm nee is nur dekorativ, also im schnee soll der spieler net langsamer gehen oder so, falls du das meinst.

Es soll ein RPG werden, also AUF den Hintergrund, werd ich auf alle fälle Entities stellen, wie gebäude etc. Gebäude sollen dann auch begehbar sein. Da könnte das verschieben des Hintergrunds noch problematisch werden...aber ich will halt keine maps haben, die nur so groß wie die gewählte auslösung sind. Zur not muss es halt dann so, aber ungern :D
 
Ach so, dann nehme ich auch an, dass man frei herumlaufen können soll, und nicht in festen Abständen auf einem Raster?

Ich denke dann läuft es doch auf irgendeine Form von "Hintergrund verschieben" hinaus.
Wie groß sollen die Maps denn sein?
Soll das begehen des Gebäudes dann auf eine neue Map führen, sodass man nur das innere sieht, oder ist das Gebäude dann z.B. mit transparentem Dach?
 
Ja ganz genau, gibt kein Raster. Gebäude sollen in einen neuen Bildschirm führen - gefällt mir besser so. Schieben auf dem Frame hab ich noch net so ganz raus, muss mal gucken, ob ich dabei dann auch gleich die gebäude mit weiterschiebe oder ob die stehen bleiben auf dem fleck, glaube ja eher letzteres :freak:
 
Das sind halt diese Dinge, über die man einige Zeit gründlich nachdenken muss, bevor man sie implementiert.

Wenn die Karten nicht zu riesig sind, wäre eine spontane Idee alles was sich nicht bewegt (Hintergrund, Gebäude, Bäume, ...) auf ein BufferedImage zu zeichnen, und davon dann immer nur den Ausschnitt um die Spielerposition herum darzustellen.
 
Wie zeichnet man sowas auf ein BufferedImage?

Also hatte dann vll überlegt, dass die Karte halt so lange geschoben wird, bis der Spieler an der Spieler den Rand sehen kann und dann net mehr die Karte geschoben wird, sondern der Spieler wieder laufen kann. So kann er das Kartenende halt erreichen, ohne das man den Rand sieht.
In meiner "Fantasie" würde ich das so realisieren, dass ich auf die Bild der Karte an jeden Rand ein Rechteck ziehe und das alles zusammen in ein BufferedImage packe. Sobald man dann eines der Rechtecke berührt (mit player.intersects(rechteck)), dann darf der player wieder laufen und die map bewegt sich net mehr. Is das machbar? Ist so ähnlich wie in dem Spiel "Conquer Online" falls dir das etwas sagt.
 
Ich kann mir in etwa vorstellen was du meinst. Machbar ist es sicher, mit genug Hirnschmalz ^^
Man muss sich eben ein paar Stunden hinsetzen und überlegen wie man es implementieren kann.

Auf ein BufferedImage zu malen ist hier erklärt.
Das ist ein Teil des Java 2D Tutorials.
 
Habs jetzt hinbekommen, dass ich immer nur einen Ausschnitt zeichne, denke mal das is in ordnung so.er geht zwar noch über die kanten hinaus, wo die karte zu ende ist mit der Kamera, aber denke das werd ich vll sogar lassen. da kann ich dann ja wolken oder so hinmachen :D Danke für deine Hilfe!
 
Prima. Ich bastele seit heute Nachmittag an einem Prototyp dafür. Da werde ich das so umsetzen wie du es vorhin meintest, und dann kann ich's dir mal schicken wenn du möchtest.
 
Zurück
Oben