Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 14, 2025 21:52

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 15, 2005 20:15 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Also, ungefähr so:

Code:
  1. if not (cube[i].Wand1.x =< newpos.x) and (cube[i].Wand1.x >= newpos.x) and (cube[i].Wand1.z =< newpos.z) and (cube[i].Wand1.z >= newpos.z) then
  2.   ...


?????????


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 15, 2005 20:18 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
LH_Freak hat geschrieben:
Also, ungefähr so:

Code:
  1. if not (cube[i].Wand1.x =< newpos.x) and (cube[i].Wand1.x >= newpos.x) and (cube[i].Wand1.z =< newpos.z) and (cube[i].Wand1.z >= newpos.z) then
  2.   ...


?????????


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? ;)

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 15, 2005 20:23 
Offline
Guitar Hero
Benutzeravatar

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 15, 2005 20:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 16, 2003 15:20
Beiträge: 198
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:
  1.  
  2. var
  3.   Field : array[1..field_width,1..field_height] of Boolean;//wenn true dann ist da ne Wand
  4.  

Wenn du dich jetzt bewegst guckst du erstmal, ob du überhaupt das Feld wechselst (pseudoCode):
Code:
  1.  
  2. if round(nextpos)<>round(oldpos) then
  3. ...
  4.  

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:
  1.  
  2. if Field[nextpos] then
  3.   begin  
  4.  //geht nicht
  5.   end
  6. else
  7.     pos := nextpos;
  8.  


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]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 15, 2005 20:30 
Offline
DGL Member
Benutzeravatar

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)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]