drawimagerect + imagescollide ?
Übersicht

ZiggyBetreff: drawimagerect + imagescollide ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute. Dies ist mein erster Post, also nehmt bitte Rücksicht ![]() Ich habe folgendes Problem: Ich lade ein großes Bild (eines von Ari Feldmann) normal mit loadimage Code: [AUSKLAPPEN] gfx = LoadImage("gfx/1945.bmp") Danach zeichne ich im Mainloop mit drawimagerect zwei Ausschnitte aus dem großen Bild (einmal das Spieler-Flugzeug und ein Feind-Flugzeug). Code: [AUSKLAPPEN] DrawImageRect gfx,s\posx,s\posy,70,202,32,32 Die Feinde habe ich mit Types gemacht, funktioniert auch alles, mehrere Feinde kommen random von oben runtergeflogen. Jetzt will ich die Kollision der Feinde mit dem Spieler per imagescollide testen, allerdings verlangt imagescollide ja immer die Namen von zwei Bildern die sich berühren sollen. Da jetzt mein Spieler und mein Feind aus EINEM Bild kommen haben diese auch keine richtigen Namen. Code: [AUSKLAPPEN] If ImagesCollide(Bild1,position x,position y,frame,Bild2,position x,position y,frame) Then ..... Wie kann ich meinem Ausschnitt einen variablen Namen zuteilen? Welche anderen Möglichkeiten stehen mir noch zur verfügung? Danke euch schon mal für die Antworten. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da wirst Du leider um ein wenig Vorarbeit nicht rumkommen.
Entweder Du schneidest die einzelnen Flugzeuge aus und speicherst sie als einzelne Bitmaps oder Du packst alle Flugzeuge in ein Image, wobei dann jedes der Flugzeuge den selben Raum einnehmen muss (also zB 64*64 Pixel). Dann kannst Du die Flugzeuge mit ql:loadanimimage einladen und jedes Flugzeug hätte ein eigenes Frame. Wenn Du noch vorhast die Flugzeuge zu animieren, wäre es sinnvoll für jedes Flugzeug ein eigenes Animimage zu erstellen. 1945 war ein gutes Game, da hast Du dir was vorgenommen ![]() Viel Erfolg. |
||
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 |
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für die schnelle Antwort, ich frage mich dann nur weshalb die ganzen Spiel-Bilder in diesem einen großen Bild gezeichnet wurden ![]() Ich meine, die Idee ist ja super, 2-3 Bilder nur für ein komplettes Spiel. Warum dann das Bild wieder auseinanderschneiden?? Schade wenn es da keine andere Möglichkeit gibt. Trotzdem Danke nochmals. Edit: Ich möchte auch das Spiel 1945 nicht komplett nachbauen, da ich noch nicht so lange mit Blitz arbeite will ich halt nur damit ausprobieren was so möglich ist. "Probieren geht über studieren.." |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
du muss nix auseinander schnippeln
nehemen wir an du arbeites jetzt ohne animierte flieger: Du malst dir ne bitmap in der alle flugzeugtypen(modelle) vertreten sind. Wichtig dabei ist, dass alle "einzelbilder" in welchen je ein flugzeug abgebildet ist, in der Bitmap genau gleich groß sind ... (64*64 , kannst auch unterschiedliche größen verwenden). Hmm bin ein schlechter erklärer.... Bilder sagen mehr als 1000 worte : Scoll mal ins letze viertel runter da wird in einem bild gezeigt wie das aufgeteilt sein muss. http://www.blitzbase.de/tutorials/rob_9.htm Somit kannste jetzt alle flugzeugtypen(modelle) in einer bitmap lassen. Im programm entspricht dan jeder frame einem anderem flugzeug. mfg Dottakopf [/code] |
||
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das loadanimimage ist mir bekannt, damit hab ich keine Probleme.
Wäre auch eine gute lösung, wenn die einzelnen Bilder denn gleich groß wären !! Natürlich sind sie es nicht ![]() Hier mal das Beispielbild: link Wenn ihr das ganze Paket von Ari Feldmann haben wollt hab ich das hier hochgeladen: link |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja das ist natürlich klar...
hier wirst du es unterteilen müssen ! Am besten du unterteilst es nach größen... in extra bitmaps --> alle kleinen flugzeuge alle großen flugzeuge alle uboote alle explosionen usw.. Natürlich kann man auch alles in eine bitmap legen aber das ist quatsch.... alle bilder haben die größe des größten bildes, so könnteste alles mit einem bild laden aber das werden dan rießen bitmaps. Davon kann ich nur abraten. mfg Dottakopf |
||
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Na gut... dann muss ich schnipseln...kein Problem.
Dachte es wäre besser wenn man nicht für jedes Objekt ein neues Bild laden würde <- Speicher schonen? Schnipseln macht allerdings auch die Sache mit den Animationen leichter... Danke für die schnelle Hilfe. Von mir aus: closed. |
||
"Es gibt 10 Arten von Menschen: Diejenigen die Binär verstehen, und jene die es nicht verstehen."
"Irren ist menschlich, gut dass ich ein Gott bin... xD" letzte Informatik-Note : 1 ... 96% richtig, Thema: C++ switch/case |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
also wenn du es schnippselst und nicht einfach mal pauschal alles 180*180 (einzelene frame größe, wenn alles in einer bitmap) dann glaub ich ist es nich so rechenaufwendig... weil bei kleinen objekten muss du ewig viel mit maskimage wegschneiden. Was jetzt aber wirklich schneller ist, weis ich nicht. Aber aufgeteilt ist übersichtlicher und meinermeinung nach so auch leichter mit den anis.
mfg Dottakopf |
||
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab mir jetzt auch noch einige Tilesets bei google angeschaut...
Das Original-Tileset von Super Mario besteht auch aus einem großen Bild mit den einzelnen Animations-Frames + Powerups + Level-Tiles etc. , aber anscheinend kann Nintendos Programmiersprache das ganze anders regeln... Naja bin jetzt erst mal mit Schnippeln beschäftigt ![]() Gruß. |
||
"Es gibt 10 Arten von Menschen: Diejenigen die Binär verstehen, und jene die es nicht verstehen."
"Irren ist menschlich, gut dass ich ein Gott bin... xD" letzte Informatik-Note : 1 ... 96% richtig, Thema: C++ switch/case |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm... sry ich geh jetzt mal n bisschen off topic
Ich behaupte ja, dass des im nachhinein alles zusammen geklatscht wurde damit mans leichter zur verfügung stellen kann. Wissen tu ichs aber ned... Daher meine frage wie die das gemacht ham, eine gesamte tile-bitmap oder auch unterteilt ? mfg Dottakopf |
||
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich bin mir jetzt auch nicht soooo sicher....
ich habe das hier bei google gefunden: ![]() aber jetzt hab ich gesehen dass das "geripped" ist, also weiss ich nicht genau ob es original Grafiken sind. Sry hab ich wohl den Mund am Anfang etwas zu voll genommen.. ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
''ripped'' -Mediadaten sind original Daten aus Spielen und anderen Programmen, die durch spezielle Tools und Programme sich die Strukturen von Dateien anschauen und nach Mustern suchen. Werden bestimmte Muster gefunden, kann meistens eine komprimierte Datenstruktur wieder zurück geschrieben werden. In diesem Fall halt deine Bilddaten. Gerippte Datensätze werden allerdings nicht legal sein.
Um bei deinen Problemen zu helfen, so wurde im grunde schon alles gesagt. Möglichkeiten: - Alle benötigten Bilder nach größe sortieren und dann so nebeneinander ein verschiedene Bildern rein kopieren (zum Beispiel mit Paint). Die Bilder heissen dann z.B. Image64.bmp, Image96.bmp, Image128.bmp... In jeweilgen Bildern sind dann halt die entsprechenden Tilegrößen vorhanden. Diese Images werden per LoadAnimImage geladen. - Alle benötigten Bilder werden nach dem größten Tile angepasst und entsprechend mit Leerraum gefüllt. Dann braucht man nur ein Image laden, doch wird viel Speicherplatz verwendet. Sowie Imagekollisionen und Darstellung wird dann unnötig Rechenintensiv. Auch hier werden die Bilder per LoadAnimImage geladen. - Alle Bilder werden einzelnd in ihrer größe gescannt und verarbeitet. Dazu müsste man sich aber eine eigene Funktion schreiben, die dann eigene Imagehandles für einzelnde Teilbilder hat. Die Bilder werden dann mithilder deiner Funktion mit DrawImageRect gezeichnet. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Gast |
![]() Antworten mit Zitat |
|
---|---|---|
Oder: CopyRect mit ImageBuffer und CreateImage | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group