Sprungkollisions Frage

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Sprungkollisions Frage

BeitragSa, Dez 25, 2004 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.
Erstmal: Frohe Weihnachten Very Happy

Ich habe ein Problem.
In meinem kleinen Spiel soll auf Kollision geprüft werden, wenn der Spieler springt. Es soll also geprüft werden, ob unter dem Spieler ein Tile ist. (Hier: Ein Tile mit der Nummer 1.).
Das mache ich bis jetzt so:
Code: [AUSKLAPPEN]

If Map(px#/TS,(py#/TS)+1) = 1 ...

px# und py# sind die Player Koordinaten ; TS ist die Tilesize.

Doch diese Kollision funzt nur manchmal. Kommt man nämlich so auf ein Tile mit dem Wert 1 auf, das zwar ein Teil des Spieler drauf steht, aber der Rest über einem Tile mit dem Wert 0 etwa, findet die Kollision nicht statt. Ich hab jetzt so lange rumprobiert, doch ich kriege das nicht gelöst. Man sackt dann immer zwischen 2 Tiles ein ~.~

Híer ne Skizze des Problems.
Das rote Feld hat den Wert 1, das ohne Füllung links daneben 0.
Der Spieler würde nun dazwischen rutschen.

http://www.wb6.de/daniel/trash/skizze.bmp

Vielleicht kann mir jemand helfen.
MFG
~ Hey Ho Let's Go ~

Hubsi

BeitragSo, Dez 26, 2004 1:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Du rechnest mit Floats. Hast Du es schonmal so versucht:Code: [AUSKLAPPEN]
If Map(Int(px#)/TS,(Int(py#)/TS)+1) = 1 ...
Ist jetzt ungestestet, aber erscheint mir jetzt auf die schnelle logisch Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Blitzkrieg Bop

BeitragSo, Dez 26, 2004 1:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Habs grad getestet und musste leider feststellen, das an manchen Stellen noch gerutscht wird.
Was kann man da noch machen? Sad
~ Hey Ho Let's Go ~

Ralf

BeitragSo, Dez 26, 2004 1:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

das müsste auch mit Float gehen, obwohl das überflüssig ist.
Ich gehe mal davon aus das Du das Handle der Figur auf der X-Achse in die Mitte gesetzt hast.
Bei Deiner Kollisionsabfrage ermittelst Du nur den einen Punkt in der Mitte der Figur. Hat die Figur Dein Tile 1 mit der Mitte überschritten, fällt er runter da dann keine Berührung mehr stattfindet.
Du musst also schon die ganze Breite der Figur auf Bodenkontakt überprüfen, und nicht nur einen Punkt.

Ralf
 

Blitzkrieg Bop

BeitragSo, Dez 26, 2004 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi! Smile
Jo danke Ralf, das war der richtige Ansatz. Habs dann auch gleich so umgesetzt, das mit ner For/Next Schleife einfach die komplette Figur von unten kinks nach unten rechts auf Kollision abgefragt wird.
Nun klappt es super. Besten Dank Wink
~ Hey Ho Let's Go ~

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group