Naja fast *gg*
Du überprüfst ja so nur immer von einer Wand oder?
Wenn du boxen hast, muss ja gucken ob der punkt drinne ist ...
ALSO du hast jetzt alles mit Wand1
brauchst ja mal mindestens 4 wände, oder?
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Am besten du speicherst deine Wände in ner schicken Datenstrucktur und zwar so, dass du rausfinden kannst welche vor und welche hinter dir liegen. Dann brauchst du nur noch die vor dir zu checken.
(Idealerweise benutzt man nen Octree oder Quadtree für sowas. Is aber vielleicht bisl heftig, wenn du dich damit noch net auseinander gesetzt hast. Wenns dich interessiert, einfach mal ins Wiki gucken.)
Dann solltest du ne Funktion schreiben die die Kollision mit einer Wand managed. Der musst du dann nur noch die Wand und die Spielerposition übergeben und fertig ist die Kollision.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Ich vermute mal, du kannst(oder hast) in etwa so eine Konstruktion erstellen, in der gespeichert ist, wo sich ein belegtes Feld befindet und wo nicht :
Code:
var
Field :array[1..field_width,1..field_height]ofBoolean;//wenn true dann ist da ne Wand
Wenn du dich jetzt bewegst guckst du erstmal, ob du überhaupt das Feld wechselst (pseudoCode):
Code:
if round(nextpos)<>round(oldpos) then
...
Wenn du das Feld nicht wechselst, bist du fein raus, weil dann kannst du auch nicht gegen eine Wand laufen. Wenn doch musst du das Zielfeld überprüfen :
Code:
if Field[nextpos] then
begin
//geht nicht
end
else
pos := nextpos;
Diese Methode hat in dieser Form aber den Nachteil, dass man im Falle einer niedrigen Framerate oder einer großen Bewegungsgeschwindigkeit eine Wand überspringen könnte, d.h. wenn z.b.(1D Beispeil) oldpos.x = 0 und newpos.x=2 und Field[1] = false, Field[2]=true und Field[3]=false dann würde man die Wand bei x=2 einfach überspringen und auf der anderen Seite der Wand wieder auftauchen.
Du müsstest also alle Wände checken, die auf dem Weg liegen.
[/pascal]
Registriert: So Dez 19, 2004 00:27 Beiträge: 454 Wohnort: Nürnberg
Ich hab mir schon den Quelltext von dieser (sehr kleinen) Engine auf dieser Shadow3D angeschaut.
Das ist ja das gleiche, bei mir funktioniert die Kollision aber nicht (wenn ich es genauso mache)
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.