Problem mit Z-Order Position von Bildern.[-ERLEDIGT-]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

shootermaker

Betreff: Problem mit Z-Order Position von Bildern.[-ERLEDIGT-]

BeitragDo, Aug 06, 2009 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Hab ein Problem was ich alleine nicht lösen kann.

Ich Lade die Map von oben nach unten, das hat den Grund damit die Gebäude(Tiles) die ich am oberen Rand der Karte platziere nicht ÜBER dem unteren erscheinen. die oberen Tiles haben alle die Kennung 0,die darunter die kennungen 1 - Maphöhe.

0 ist Layer 0 - wird also zuerst gezeichnet
1 ist layer 1 - er wird nach 0 gezeichnet und ist somit über 0 alle tiles die sich in reihe 1 befinden werden über 0 gezeichnet.

Zur Veranschaulichung:

0000000000000000000000000000000
1111111111111111111111111111111
2222222222222222222222222222222
3333333333333333333333333333333
4444444444444444444444444444444
5555555555555555555555555555555
6666666666666666666666666666666
7777777777777777777777777777777
8888888888888888888888888888888
usw...

Mit Gebäuden ist es nun kein Problem sie richtig zu platzieren. aber wie sieht es jetzt mit den Einheiten aus?

Die Einheiten werden in einem Typ erstellt.


ich lasse jetzt die Einheit z.b. vom oberen Rand zum unteren Rand maschieren.
demnach müsste sich seine Layerposition (oder Z-Order wie es oft genannt wird.) verändern.



Code:
if All\Z-Order = 0 then
DrawImage Swordman,All\X,All\Y,All\Frame

if All\Z-Order = 1 then
DrawImage Swordman,All\X,All\Y,All\Frame

if All\Z-Order = 2 then
DrawImage Swordman,All\X,All\Y,All\Frame


Aber das tut er nicht. er müsste doch aber die Einheit immer wenn sie z.b. von der Reihe 0 zu Reihe 1 wechselt neu zeichnen... demnach ÜBER der Einheit die auf 0 steht...

Hoffe ich hab es einigermaßen verständlich erklärt, wenn nicht einfach noch mal nachfragen. Sad

Vielen Dank im Voraus.
  • Zuletzt bearbeitet von shootermaker am Fr, Aug 07, 2009 13:48, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragDo, Aug 06, 2009 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du das so machst, ist der Wert vom Z-Order gleichgültig - die Einheiten werden so oder so gezeichnet. Du musst erst alle Einheiten auf dem untersten Layer zeichnen, dann alle Einheiten des nächsten Layers und so fort.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

ToeB

BeitragFr, Aug 07, 2009 9:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Du prüfst einfach, auf welchem layer die Einheiten sich befinden (also auf welchen y tiles) . Das speicherst du in jedem einheiten type ab und malst sie dann. Werden die einheiten bewegt, speicherst du wieder die neue position. Das musst du aber nur bei Pixelbewegung der einheiten machen, aber wenn du sie eh von tile zu tile bewegst, nimmst du die einfach. Jetzt nur noch alle malen :

Code: [AUSKLAPPEN]
For i = 0 to MapHeight-1
For e.einheit = Each einheit
If e\y = i Or e\layer = i ;(Je nach dem)
DrawImage einheit007,e\x,e\y
EndIf
EndIf


Aber nicht vergessen, das nach dem malen der map auszuführen, sonst sind die figuren unter der map Wink

mfg Toeb
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

shootermaker

BeitragFr, Aug 07, 2009 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo und viele Dank für eure Antworten! Smile


@ToeB

Genau dieser Code hat mir gefehlt... funktioniert einwandfrei, Danke danke und danke. Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group