ImagesOverlap für verschiedene Ebenen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

peter_85

Betreff: ImagesOverlap für verschiedene Ebenen?

BeitragMi, Mai 29, 2013 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

kann man für ein Bild verschiedene Ebenen festlegen und ImagesOverlap nur wirken lassen, wenn das andere Bild +/- eine Ebene davon entfernt ist?
Momentan wirkt die Kollision immer, egal wieviele Bilder dazwischen sind und ich möchte es ungern umständlich mit if-Anweisungen lösen.

thx.

DAK

BeitragMi, Mai 29, 2013 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Solche Ebenen gibt es meines Wissens nach nicht direkt, lässt sich aber recht einfach dazubasteln. Zuerst speicherst du dir zu jedem Bild die Information welche Ebene es ist. Kann man z.B. über ein Type regeln

BlitzBasic: [AUSKLAPPEN]

Type TEbenenBild
Field bild
Field ebene
End Type


Als nächstes hast du dann deine erweiterte ImagesCollide-Funktion:

BlitzBasic: [AUSKLAPPEN]

Function LayeredImagesCollide(image1.TEbenenBild, image2.TEbenenBild, distance)
If (Abs(image1\ebene - image2\ebene)<=distance) Then Return ImagesCollide(image1,image2)
Return False
End Function


LayeredImagesCollide funktioniert wie das normale ImagesCollide, nur dass distance angibt, wie viele Ebenen die beiden Bilder maximal von einander entfernt sein sollen.

Kann sein, dass es nicht direkt so funktioniert, ich habs nicht getestet, sondern nur im Browser geschrieben. Ist auch schon ne Weile her, dass ich wirklich was mit Blitz gemacht hab.
Gewinner der 6. und der 68. BlitzCodeCompo
 

peter_85

BeitragMi, Mai 29, 2013 14:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnelle Antwort. Das mit den Ebenen im Type speichern ist sicher für andere Bereiche meines Spiels sinnvoll. Momentan habe ich nur das Problem, dass wenn ich das Baumenü bei meinem Strategiespiel aufrufe, ich dahinter dennoch alles anklicken kann (lässt sich beim Baumenü ganz leicht über eine if-Abfrage regeln, aber generell würde solch ein Befehl sicher einiges erleichtern).

Dicker Hobbit

BeitragMi, Mai 29, 2013 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst das Baumenü auch in eine Function legen und (Wenn es nicht zwingend notwendig ist) den Hintergrund, den du nicht anklicken willst einfach nicht zeichnen.

Das wäre eine Möglichkeit um die von DAK beschriebenen Ebenen als Types zu umgehen, wenn du damit nicht arbeiten willst.


@DAK bei ImagesCollide fehlen noch ein paar Parameterchen Wink


Lg Dicker Hobbit
 

peter_85

BeitragMi, Mai 29, 2013 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Baumenü ist in einer Funktion und das nicht zeichnen meinte ich mit der if-Anweisung.Wink
Aber was mache ichz.B., wenn ich eine Welt als Hintergrund habe, zweite Ebene sind die Häuser und davor (Ebene 3) sollen sich die Figuren bewegen. Mauszeiger wäre dann Ebene 4 (jetzt mal schnell vereinfacht gesagt).
Mit den Ebenen könnte man es eben auch schön zeichnen - so muss man alles zur richtigen Zeit zeichnen, damit die "Ebenen" zustandekommen. Das finde ich momentan etwas "umständlich". Jedes Problem für sich gesehen ist klein, aber im Ganzen macht es wohl schon was aus. Confused

BladeRunner

Moderator

BeitragMi, Mai 29, 2013 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht wirklich. Wie Du ja schon sagst ist es eine Frage der Abfolge des Zeichnens. Es gibt je nach Art de Darstellung verschiedene Methoden um eine Regelgerechte Darstellung zu erlangen. Bei TopDwon-Grafik reicht wirklich ein einfaches unterteilen in diese "Höhenebenen" und strikt nacheinander ausgeführtes Zeichnen. Was ist daran so kompliziert?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group