Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Loigie Junior JLI'ler
Anmeldedatum: 29.06.2004 Beiträge: 52 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 18.04.2005, 16:36 Titel: Kollisionserkennung |
|
|
Hallo,
ich suche im Moment eine geeignete Kollisionserkennung für ein 2D Jump & Run Spiel.
Als erstes habe ich die Kollisionserkennung aus Kapitel 25 mit dem Byte Array benutzt da ich aber dabei immer nur TRUE oder FALSE zurückkriege hing meine Figur immer kurz fest. War eigentlich ganz lustig aber nicht ganz in meinem sinne . Beim googlen hab ich etwas über Tiles aufgeschnappt aber da kann man sein Spiel nur Quadratisch(in Tiles) aufbauen oder? Also kennt irgendjemand noch eine andere Lösung muss es ja schließlich geben.
M.f.G. Loigie |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.04.2005, 16:40 Titel: |
|
|
welche meintest du denn mit "die aus dem Buch hab ich genommen"? Die mit dem 4D Vektor? Oder die andere Pixelgenaue? Falls es bei dir nicht allzu genau sien muss, nimm doch angepaste Bounding-Boxen; das geht schnell und is gut
Gruß DirectXer |
|
Nach oben |
|
|
Loigie Junior JLI'ler
Anmeldedatum: 29.06.2004 Beiträge: 52 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 18.04.2005, 16:54 Titel: |
|
|
25.6.2 Meine ich um genau zu sein
Die Funktioniert auch aber ich weiß nicht wie ich auf ein TRUE reagieren soll? Momentan mache ich das so:
Code: | SetPosition(m_vPosition.x,m_vLastPosition.y);
if(CollisionClass.TestCollision(m_lpSelfSprite))
SetPosition(m_vPosition.x,m_vLastPosition.y-1);
if(CollisionClass.TestCollision(m_lpSelfSprite))
SetPosition(m_vLastPosition.x,m_vLastPosition.y);
|
Hat halt den Effekt dass du dich an den Klötzen Seitlich und drunter hängen bleibst bis dich die Schwerkraft runter holt.
Da helfen mir auch Bounding-Boxen nicht weiter oder?
Ich bräuchte eine Kollisionserkennung die mir zumindest sagt wo mein Sprite Kolliediert ist (Rechts oder Links...).
M.f.G. Loigie |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 18.04.2005, 16:59 Titel: |
|
|
Mach doch eine Liste, wo du alle "festen" Objekte reinschreibst, dann schreibste 4 Funktionen (für alle vier Richtungen), die dir die Differenz vom Spieler zum jeweiligen Objekt zurückgibt. _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Loigie Junior JLI'ler
Anmeldedatum: 29.06.2004 Beiträge: 52 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 18.04.2005, 17:10 Titel: |
|
|
Wir ziemlich schwierig.
1. Vom Verwaltungsaufwand.
2. Kann ich nur runde Objekte benutzen.
Es sei den ich trag jeden Pixel einzelnt ein.
und ich habe es ja sogar sozusagen schon in meinem CollisionArea umgesetzt.
Korrigiert mich ruhig falls ich mich irre |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.04.2005, 17:11 Titel: |
|
|
Loigie hat Folgendes geschrieben: | 25.6.2 Meine ich um genau zu sein
M.f.G. Loigie |
schon klar, aber unter dem Abschnitt 25.6.2 stehen 2 Varianten: einmal mit den 4D Vektor und die mit dem sperren. Dafür würde ich den Kollisionstest, der auf S.390 unter Abb. 25.6 zusehen ist benutzen, weil du dann auch überprüfen kannst, ob der Links oder rechts ist. Dazu lässt du dir ein D3DXVECTOR2 zurückgeben, der dir die Position der Pixelüberschreitung sagt. Die kannst du dann überprüfen(z.B. if(Sprite.GetWidth / 2 <= CollisionPos.x && CollisionPos.x <= Sprite.GetWidth)
...
else if(...) |
|
Nach oben |
|
|
Loigie Junior JLI'ler
Anmeldedatum: 29.06.2004 Beiträge: 52 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 18.04.2005, 17:21 Titel: |
|
|
Werde ich mall Probieren sollte funktionieren
Danke für eure Hilfe |
|
Nach oben |
|
|
|