Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Kollisionsabfrage 2D

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.06.2004, 10:47 Uhr
ecuador



Hi,

hab vor kurzem eine simple 2D-Kollisionsabfrage geschrieben, ganz primitiv mit Windows-Elementen als Hindernissen. So weit so gut funzt das Ding ja, aber sobald ich kombinierte Elemente als Hindernis einsetze, macht das Ding schlapp, da die Berechnung für den nächsten Schritt primär von der Distanz zum Ziel abhängt. Also bei so was gibts dann Probs:


[TARGET]


+++++++++++++++++++
+
+
+
+ [ ACTUAL POS]
+



[START]


Wenn der "Player" dann auf die Wand trifft, rennt er links dran entlang, aber trifft dann leider auf die andere (linke) Wand. Diese Wand bekommt einen Abzug an "Begehbarkeitspunkten", womit leider wieder der vorherige Schritt Priorität bekommt. Ich hab schon versucht, bei so was eine Funktion zu be-
nutzen, die den "Spieler" dann um das Hindernis lotzt, aber das ist auch nicht das Gelbe vom Ei. Hat da jemand vielleicht ne Idee, wie das besser zu machen wär ??? Wär für ne ansatzweise Lösung echt dankbar ( Berechnung Distanz durch sqrt( (( x1 - x2) * (x1 -x2)) + ((y1 - y2) * (y1 - y2)) )


greets

ecuador
--
Mortuari et salutant
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.06.2004, 11:02 Uhr
(un)wissender
Niveauwart


Ich glaube, was du eigentlich suchst, ist ein Pathfindingalorithmus.
Professionell würde man das mit einem Graphen machen, jeder erreichbare Punkt ist ein Eintrag. Die Kanten des Graphen sind gewichtet, jeweils mit den Distanzen zu ihren Nachbarn (räumlich gesehen).
Google hilft da.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.06.2004, 11:10 Uhr
ecuador



Also auf gut deutsch, man erstellt sich eine "Map" mit begehbaren Punkten, auf denen der player latschen kann ? Thx for now...


ecuador
--
Mortuari et salutant
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.06.2004, 11:45 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


man macht z.b die karte so:

o begehbar
x wand



Code:
oooooooooooo
oooooxoooooo
oooooxoooooo
ooxxxxxooooo
ooxooooooooo
oooooooooooo



wenn man nun z.b den startpunkt ganz links oben hat, ziel sagen wir rechts unten (d.h schnellster weg diagonal)
Wenn man nun auf die wand trifft (d.h P(X+1,Y+1) = 'x') muss man nun schauen wie man am besten rumkommt, also abgleichen ob links oder rechts davon frei ist, wenn nicht, muss man einfach die möglichkeiten durchrechnen lassen bis man wieder auf den punkt hinter der Wand ist (also P(X+2,Y+2) )

Naja Kollosionsabfragen sind immer ein graus
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.06.2004, 11:45 Uhr
(un)wissender
Niveauwart


Wenn du es so nennen willst.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.06.2004, 13:10 Uhr
ecuador



Hm scheint mir auch etwas nervig, aber ist doch ne nette Übung Thanks for ya answers !!


greets

ecuador
--
Mortuari et salutant
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: