Grafik überlappungen
Übersicht

![]() |
DottakopfBetreff: Grafik überlappungen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Blitzer!
Ich hoff alle ham den weihnachtstrubel heil überstanden und sind wohl auf ![]() Mein problem ist das ... wie man sehen kann, ist beim linken bild der kopf unter dem anderen image, während auf dem 2ten bild die grafik anordnung richtig ist. Mir ist klar, das es daran liegt, in welcher reihenfolge die bilder gemalt werden. Leider würde es nichts bringen, die reihenfolge zu verändern, da sich diese bilder(types) frei umherbewegen. Meine Frage kennt einer nen trick wie ich das beheben kann? Ohne die grafik in 2 teile zu unterteilen (kopf und körper). Noch n paar infos : Das ganze läuft auf ner tilemap mit pixel zu tile bewegung tile größe = 32*32 pixel und die größe des chars = 32*40 Und nochwas was aber nur nebensächlich ist, kann ich den koordinaten ursprung des bildes von der linken oberen ecke auf die linke untere ecke legen? Ich kenn jetzt nur "midhandle" der setzt aber nur den ursprung in die mitte. mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würd sagen du zeichnest die objekte von hinten nach vorne*, die position sollte selbst mit types rausfindbar sein.
*Also alles was im Bildschirm weiter oben ist zuerst, dann das darunter, usw... |
||
Starfare: Worklog, Website (download) |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ahh uff ![]() Hm stimmt wenn ich vor dem zeichnen die listen einträge neu anordne müsste es funtzen Nur wie mach ich das programiertechnisch ![]() Ich weis das ich "insert" "befor" und "first" brauch, meine schwierigkeit besteht darin, rauszufinden welcher typeeintrag (in koordinaten) weiter unten bzw oben ist. Und was mache ich wenn 3 bots die gleiche y koordinate ham, und nur verschiedene x werte. Und vorallem wie rechenaufwendig ist das wenn ich das bei jedem schleifen durchlauf machen lasse? ~edit~ oder ich prüf immer bot_y koordinate -1 und schau ob da ein anderer bot steht, wenn ja, vergleiche die type positionen und wenn die nummer kleiner als bot_y dan schieb diesen bot an die erste stelle. Ist dieser gedanken gang so funktionstüchtig ? mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zu deiner nebensächlichen Frage: Es gibt einen Befehl namens HandleImage, der genau das machen kann, was du da suchst. | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
prolapper |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du überprüfst einfach, wenn sich zwei Bilder überlappen, welches von beiden den höheren Y-Wert besitzt, denn das was weiter hinten ist wird weiter ober gezeichnet. Das geht aber nur wenn die Bilder gleich groß sind.
Hoffe das hilft dir. Also ja dein gedanken gang ist so eigentlich richtig. Würd ich auf jeden Fall so machen. Wenn sie die gleichen X-Werte haben, dann musst du, wenn sie sich treffen entweder per Zufall ermitteln und dann jeweis für alle merken, oder du machst gleich am Anfang wenn du sie erstellst (mit einem Feld, etc.) eine Variable, die sich für jeden neu erstellten um 1 erhöht. Und dann wenn sie sich treffen einfach den als erstes Zeichnen, der den niedrigsten Wert hat. |
||
P.S: ICH SUCHE NOCH EINEN GRAFIKER UND EINEN PROGRAMMIERER FÜR EIN RPG
E-Mail: prolapper@gmx.net |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm habs jetzt geschaft, das die überlappungen richtig angezeigt werden, aber jetzt binkt das bild dann immer ganz schnell.
was hab ich gemacht: statt die liste komplett neu zu ordnen schiebe ich einfach den zutreffenden type an die letzte stelle. So wird er immer zuletzt gezeichnet, allterdings ist das wohl doch irgendwie falsch, da wie gesagt, die grafik wie verrückt blinkt. Code: [AUSKLAPPEN] If tile_besetzt(bot\bot_tx,bot\bot_ty-1,bot\bot_layer) = 1 Then Insert bot Before Last bot End If ; bot malen Kann man tortz solch einfacher abfrage das blinken abstellen ? mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
vielleicht gehts ja, wenn du statt
Code: [AUSKLAPPEN] Insert bot Before Last bot
Code: [AUSKLAPPEN] Insert bot After Last bot
schreibst ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ne hat leider nix geholfen.
Ich behaupte auch zu wissen woran es liegen könnte: Aufbau: Code: [AUSKLAPPEN] for bot = each bot <anweisung> bot ordnen bot malen next wenn ich jetzt, bevor der bot gemalt wird ihn wo anders in der liste hinschieb, wird er ja solange nicht gemalt, bis die schleife wieder bei diesem bot eintrag ist. So könnte das blinken zu stande kommen. Und solange sich der bot von der position (anderer bot_y +1) nicht wegbewegt, wird dieser auch immer an letzte stelle geschoben. Ich hab aber keine ahnung, wie ich das beheben könnte. Villeicht bringts was wen die ordnung nur 1mal pro tile-bewegung und nicht per pixel bewegung passieren würde und nicht bei jedem schleifen durchlauf ![]() ~EDIT~ Hmm ich konnte das blinken jetzt abstellen, indem ich die eintrag verschiebung nur dan ausführe, wenn sich der bot um ein tile bewegt. Hin und wieder blinkt ein bot für ne millisekunde kurz auf, hab aber noch nicht herrausgefunden wann und warum. Sonst funktioniert das mit den überlappungen schon so wie es wollte. Also thx!! Wenns noch probleme gibt melde ich mich nochmal. mfg Dottakopf |
||
![]() |
prolapper |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könnteset einfach bevor du die Bots malst immer sortieren. Es kann sein, dass des a bissi langsamer is aber es müsst gehen:
Code: [AUSKLAPPEN] Dim bots(9,2)
;bots(x,0) = Reihenfolge ;bots(x,1) = X-Wert ;bots(x,2) = Y-Wert For I = 0 To 9 If bots(I,1) > bots(I+1,1) Then bots(I,0) = bots(I,0) + 1 : bots(I+1,0) = bots(I+1,0) - 1 I = -1 EndIf Next Also zumindest mit nem Dim-Feld würd ich's so machen. Is viellercht a bissi unelegant, aber trotzdem. Du solltest bedenken, dass diese For Schleife im Extrem-Fall ziemlich lang braucht, um ale in die richtige Reihenfolge zu bringen. Besonders wenn's mehr bots sin. Also ab 50 Bots is dass nicht zu empfehlen, da zum Beispiel, wenn du 100 sortieren möchtest, die Schleife 100000 Durchläufe macht. Das ganze geht schneller mit einer zweiten Schleife in der Ersten: Code: [AUSKLAPPEN] Dim bots(9,2)
;bots(x,0) = Reihenfolge ;bots(x,1) = X-Wert ;bots(x,2) = Y-Wert For I = 0 To 9 For Y = 0 To 9 If bots(I,1) > bots(Y,1) Then bots(I,0) = bots(I,0) + 1 : bots(Y,0) = bots(Y,0) - 1 I = -1 EndIf Next Next So in etwa müsste das dann aussehen. Etz benötigen wir nur noch die Hälfte der Durchläufe. Hoffe ich hab dir geholfen. Ich denke du müsstest, aber dein ganzes Programm umschreiben, weil du, glaub ich nicht mit einem Feld arbeitest. Das bleibt natürlich dir überlassen. ByeBye |
||
P.S: ICH SUCHE NOCH EINEN GRAFIKER UND EINEN PROGRAMMIERER FÜR EIN RPG
E-Mail: prolapper@gmx.net |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
hey cool ! thx
Aber ich werd bei den types und meiner aktuellen lösung bleiben, da ich wohl nie über 25 bots auf eienr map mit max 120x120 tiles haben werde ^^ Sollte das ganze mir doch mal zu langsam werden, werd ich deinen lösungsvorschlag anwenden. Also nochmal thx mfg Dottakopf *Hmpf, die smylies haben keine mütze mehr... jetzt kann ich seine glatze sehen ---> ![]() |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
prolapper |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kein Problem ![]() Diese Methode nennt sich übrigens Bubble Sort. Falls du's wissen willst. ^^ Weil nämich die "leichteren Blasen" nach oben "blubbern" und die "schwereren" unten bleiben. (Typisch Programmierer. Sind wie die Mathematiker. Erst überlegen sie sich die schwierigsten Lösungswege, und sind dann zu faul sich einen richtigen Namen auszudenken. ![]() (( Ich fand die Weihnachts-smilies auch cool ![]() An Alle an guten Rutsch in's neue Jahr !!! Grüße Prolap |
||
P.S: ICH SUCHE NOCH EINEN GRAFIKER UND EINEN PROGRAMMIERER FÜR EIN RPG
E-Mail: prolapper@gmx.net |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group