JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

2D Jump&Run Spiel Kollisionserkennung
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Loigie
Junior JLI'ler



Anmeldedatum: 29.06.2004
Beiträge: 52
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 01.09.2005, 20:06    Titel: 2D Jump&Run Spiel Kollisionserkennung Antworten mit Zitat

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 Don't . Und am besten code welcher nicht auf Tiles basiert.


M.f.G. Loigie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 01.09.2005, 20:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 01.09.2005, 20:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Loigie
Junior JLI'ler



Anmeldedatum: 29.06.2004
Beiträge: 52
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 02.09.2005, 06:36    Titel: Antworten mit Zitat

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 Laughing . 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
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 02.09.2005, 08:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 02.09.2005, 12:35    Titel: Antworten mit Zitat

Schau mal in Projekte... hab zwei Beispielprogramme geschrieben, die fliegen da rum. ;)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 02.09.2005, 14:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 02.09.2005, 14:33    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 02.09.2005, 19:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 02.09.2005, 20:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Loigie
Junior JLI'ler



Anmeldedatum: 29.06.2004
Beiträge: 52
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 03.09.2005, 14:35    Titel: Antworten mit Zitat

Eine auf Tile Basierende engine hat halt den nachteil das man alles in gleichmäßigen Rechtecke aufteilen muss.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 04.09.2005, 09:17    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 04.09.2005, 13:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 04.09.2005, 14:04    Titel: Antworten mit Zitat

Zitat:

WIe kommt das?


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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.09.2005, 14:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum