Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Loigie Junior JLI'ler

Anmeldedatum: 29.06.2004 Beiträge: 52 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 01.09.2005, 20:06 Titel: 2D Jump&Run Spiel Kollisionserkennung |
|
|
Hallo
Kennt jemand schönen Beispiel code? Der vorallem das zurücksetzen der Spielfigur bei einer Kollision behandelt. Ich habe bis jetzt zumindestens noch keine zufrieden stellende Lösung gefunden . Und am besten code welcher nicht auf Tiles basiert.
M.f.G. Loigie |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 01.09.2005, 20:11 Titel: |
|
|
Du testest vor einer möglichen Bewegung einfach auf eine Kollision zwischen Figur und Objekt (BoundingBoxes, BitMasken, ...). Findet eine statt, brichst du den Vorgang ab, findet keine statt bewegst du die Figur. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 01.09.2005, 20:11 Titel: |
|
|
hm, jop, ich hab mal sowas gecodet. War ganz easy, also als Objekte hatte ich beliebige Quader. Das zurücksetzen ist an sich keine große Sache, entweder testet man, ob die Spielfigur, wenn sie den nächsten schritt machen würde, ind er Wand hängen würde, und macht ihn dann nicht, ober man macht den Schritt einfach, guckt wie weit der spieler in der Wand steckt, und bewegt ihn dann um so viele einheiten zurück, das er direkt vor der Wand ist. An sich ganz einfach. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Loigie Junior JLI'ler

Anmeldedatum: 29.06.2004 Beiträge: 52 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 02.09.2005, 06:36 Titel: |
|
|
Ganz so einfach ist das bei mir nicht ich habe ja noch meine Physik Klasse die meine Figur beschleunigt also stekt die früher oder später im Boden . Wenn also meine Figur im Boden steckt und gleichzeitig vom Spieler nach rechts bewegt wird, man aber dann die Position weil es ja eine Kollision gab zurück setzt, wird auch die Rechts bewegung mit zurück gesetzt. Also die Figur bleibt hängen.Wenn man dan sagt es wird immer nur der Y wert zurück gesetzt kann die Figur wagerecht dur hindernisse laufen u.s.w. |
|
Nach oben |
|
 |
xardias JLI Master

Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 02.09.2005, 08:42 Titel: |
|
|
Da du hier axis aligned boxen hast kannst du ja in alle 4 richtungen auf eine kollision prüfen. findet eine kollision statt wird die bewegung in diese richtung verhindert. |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 02.09.2005, 12:35 Titel: |
|
|
Schau mal in Projekte... hab zwei Beispielprogramme geschrieben, die fliegen da rum. ;) _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 02.09.2005, 14:26 Titel: |
|
|
die Gravitation wirkt im Grunde nur wenn der Spieler NICHT am Boden steht. Wenn er also den boden berührt (in YRichtung) wird die YGeschwindigkeit auf 0 gesetzt. Du kannst ja auch zusätzlich ne Varaible machen, ob er am Boden ist, wenn ja kann man halt springen und die Gravitation wirkt nicht. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 02.09.2005, 14:33 Titel: |
|
|
Doch die Gravitation wirkt immer, tut der Spieler nichts dagegen wird die Figur langsam erdrückt.
Aber nun mal ernsthaft: ansich sind die hier genannten Lösungen ja super aber habt ihr euch schonmal pberlegt das nicht bewegen keine richtige Lösung ist, theoretisch müsste man die Figur so nahe wie möglich zum Collider plazieren wenn der nächste Schritt nicht möglich ist. So schliesst man deltaTime inaccuracy probleme aus. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 02.09.2005, 19:57 Titel: |
|
|
naja, oder du machst dir einfach sogenannte Checkpoints, falls dir der andere Kram zu aufwändig ist. Bei einem übertreten eines Checkpoints stellst du irgendeinen Wert auf c3 oder so und beim Kill machst du dann place(c3), je nachdem, wie du willst
Gruß DirectXer |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 02.09.2005, 20:44 Titel: |
|
|
Bei einer tilebasierenden Engine würde sich evt. auch ein System wie im RPG-Maker anbieten, das ist imho sehr flexibel und performant.
Du setzt für jede Seite eines Tiles ein 'bool', und je nachdem, ob dieses 'true' oder 'false' ist, kann das Tile von dieser Seite betreten werden oder nicht. |
|
Nach oben |
|
 |
Loigie Junior JLI'ler

Anmeldedatum: 29.06.2004 Beiträge: 52 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 03.09.2005, 14:35 Titel: |
|
|
Eine auf Tile Basierende engine hat halt den nachteil das man alles in gleichmäßigen Rechtecke aufteilen muss. |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 04.09.2005, 09:17 Titel: |
|
|
Loigie hat Folgendes geschrieben: | Eine auf Tile Basierende engine hat halt den nachteil das man alles in gleichmäßigen Rechtecke aufteilen muss. |
Nein, muss man nicht. Mit meiner aktuellen 2D Engine an der ich gerade bastele kann man im Map Editor Collider setzen... die Tile Layer dienen nur als Grafiken. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 04.09.2005, 13:55 Titel: |
|
|
Wie macht ihr das eigentlich mit eurer Kollision?
Ich mach das immer so:
(int)Player.vPos.y >= Boden
Dabei wird also die float Playerposition in int umgewandelt und mit dem Boden verglichen der bereits int ist.
Jedoch kommt es manchmal vor das mein Player dann ein Pixel weiter im Boden ist und manchmal nicht. WIe kommt das? |
|
Nach oben |
|
 |
OLiver Super JLI'ler

Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 04.09.2005, 14:04 Titel: |
|
|
Liegt an der Ungenauigkeit der Gleitkommazahlen, das hatte ich auch schonmal erlebt, seitdem benutz ich nie wieder float/double, nur im äußersten Notfall, bei jump'n run würde sicher auch Gleitkommaverschiebung ausreichen... _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 04.09.2005, 14:09 Titel: |
|
|
Hm, jo, allso DIE Kollisionslösung gibt es sicher nicht, ich denke wenn man genau wüsste, wie du den Spieler bewegst, wie das Level aufgebaut ist, wie du es bisher versucht hast, und was dir daran nicht gefallen hat, könnte ich zumindest bessere Tips geben. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
|