Kollision!?!??

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Kollision!?!??

Beitrag von Lukaso »

Hallo,

ich versuche mich gerade an meinem ersten Spiel in PureBasic ... es ist ein 2D Jump&Run Game. Naja, nun habe ich erste probleme mit der Kollision ..... Ich habe jetzt eine Box aus der Tilesammlung geladen .... nur habe ich die box im Raum 40 Mal plaziert .... also 40x DisplayTransparentSprite(5, ....) so, jetzt überprüfe ich wären eines Tastendrucks ob Kollidiert ist wenn nicht, bewege das mänchen ....

Ich kann jetzt aber schlecht

Code: Alles auswählen

If DisplayTransparentSprite(5, ....) AND DisplayTransparentSprite(5, ....) AND DisplayTransparentSprite(5, ....) AND .....
das ganze 40x machen .....

Wie könnte ich das am besten lösen??

Danke Lukaso

MFG Lukaso :wink:
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
Epyx
Beiträge: 247
Registriert: 29.08.2004 01:40
Computerausstattung: AMD64 X2 DualCore 6000+ , 3GB Ram , WinXP sp3
2x Ati Radeon HD4800 ~ CrossFireX
Kontaktdaten:

Beitrag von Epyx »

Das einfachste wäre eine Schleife, packe die Positionen in eine LinkedList und überprüfe die Kollision in einer While/Wend schleife.
Oder schreibe dir ein eigenes Map Format und und check anhand der Position deiner Spielfigur die Position in deinen MapDaten dann müsstest du nicht ständig die SPrite Kollisions Prüfung abfragen.

Oder nimm meinen MapEditor da habe ich auch eine Display Routine sowie die Prüfung ob ein Sprite kontakt mit der Karte hat oder nicht schon drin. Wenns dir ausreicht ist gut wenn nicht gibts hier auch schon ein paar komplexere Editoren :)
If you can't make it good, at least make it look good.
Bill Gates
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

@Epyx
Danke für deine Antwort! Ich habe mir deinen MapEditor mal angesehen ... nicht schlecht :allright: Aber leider kann ich nicht viel damit anfangen, da meine bedürfnisse nicht alle gedeckt werden.

Deshalb habe ich gerade begonnen einen eigenen MapEditor zu basteln :wink: Ist nur schade, dass ich nicht mehrere OpenWindowScreen() verwenden kann ....

MFG Lukaso :allright:
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Beitrag von orange-blue »

Deshalb habe ich gerade begonnen einen eigenen MapEditor zu basteln Ist nur schade, dass ich nicht mehrere OpenWindowScreen() verwenden kann ....
Das hab ich mir auch schon gedacht(als ich mich an auch einen eigenen Mapeditor versuchte) :)
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Hilfe, ich komm nicht weiter :|

Ich erkläre mal kurz, ich habe nen Tileset mit 32x32 Pixel Tiles. Und einen Bildschirm mit 640x480 Pixeln Auflösung.

Im Tileset habe ich Tiles, die nur als verschönerung der Map gedacht sind, welche die Komplette Kollision haben sollen, und welche auf denen man nur stehen kann.

Nur ist mein Problem, wie ich die Tiles auseinanderhalten soll ....

Danke für eure Hilfe. :allright:

MFG Lukaso

PS: Das Game soll ein "Super Mario War" Clone/Weiterentwicklung sein. :wink:
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

In irgendeinem Tut. hab ich gelesen, dass man wohl dazu Tabellen schreibt, in denen die verschiedenen Typen angegeben sind.
Dann wohl noch eine, in der die Typen den Tiles zugewiesen werden.

Am besten, du liest dir so ein Tutorial mal durch. Ich hab aber leider keine Adresse und noch weniger irgendwelches zusätzlihes Wissen, weil ich mich damit (noch?) nicht beschäftige.

Simon
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich löse sowas durch den aufbau des tilesets:

so aufbauen, dass die bits der tile-nr aussagekräftig sind...

also z.b.
tile 0-63 passierbar
tile 64-127 nicht passierbar
=> (tileNr AND 64) ist passierbar-flag...

das kann man für jede eigenschaft, die ein tile haben soll, so machen.
in der map steht dann nur die tile-nr.
du kannst damit auch der selben grafik unterschiedliche eigenschaften zuweisen.
indem du dann z.b. nur (tileNr. AND 127) darstellst, dann kann bit 128 eine zusätzliche eigenschaft sein, die man nur spürt aber nicht sieht...

ist übrigens die übliche vorgehensweise, bei vielen spielen hat man longs als array, da hast du 32bits insgesamt,
meistens reichen 256-1024 verschiedene grafiken, da bleiben etliche bits für flags...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten