[Erledigt] GtaSteuerung - Collision

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Düsi

Betreff: [Erledigt] GtaSteuerung - Collision

BeitragSa, Jul 26, 2008 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
moin,
vorweg ich hab nix in der sufu gefunden, wusste aber ehrlich gesagt auch nicht was ich eingeben sollte... :/

also, mein problem ist die Collision auf ner Tile Map mit ner ala GTA-Steuerung...

Code: [AUSKLAPPEN]
Function MoveMan()
   ;================================================================================================
   ;> Bewegen+Collision
   
   If KeyDown(200) Then
      xTmp# = PosX + Cos(Angle)*MoveSpeed
      yTmp# = PosY + Sin(Angle)*MoveSpeed
      
      xTileTmp# = xTmp/40
      yTileTmp# = yTmp/40
      
      If arrMapCollision(xTileTmp, yTileTmp) = 0 Then
         PosX = PosX + Cos(Angle)*MoveSpeed
         PosY = PosY + Sin(Angle)*MoveSpeed   
      Else
         Angle = Angle + 2
         If Angle => 359 Then Angle = 0
      EndIf
   EndIf    
   
   If KeyDown(208) Then
      xTmp# = PosX - Cos(Angle)*MoveSpeed
      yTmp# = PosY - Sin(Angle)*MoveSpeed
      
      xTileTmp# = xTmp/40
      yTileTmp# = yTmp/40
      
      If arrMapCollision(xTileTmp, yTileTmp) = 0 Then
         PosX = PosX - Cos(Angle)*MoveSpeed
         PosY = PosY - Sin(Angle)*MoveSpeed   
      Else
         Angle = Angle - 2
         If Angle => 0 Then Angle = 359
      EndIf
   EndIf       
End Function


Ich dachte mir, wenn man sich nach voren/nach hinten bewegt einfach in einer Variable die Position speichern wenn man sich bewegen würde, das dann durch 40 teilen (so große ist ein tile) und dann eben prüfen ob das tile ein collision hat... Das ganze kommt dann aber so raus:

http://s7.directupload.net/fil...yn_png.htm

bzw wird bei einzelnen tiles gar nicht

http://s8.directupload.net/fil...e7_png.htm

(jedes Tile des Hauses hat ne Collision...)

Wie kann man die Collision genauer bzw funktionierender machen?

Danke schonmal...
  • Zuletzt bearbeitet von Düsi am Mo, Jul 28, 2008 18:48, insgesamt einmal bearbeitet

The Shark

BeitragSa, Jul 26, 2008 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir das mal an:
https://www.blitzforum.de/foru...php?t=5286
 

Düsi

BeitragSa, Jul 26, 2008 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das kenne ich bereits. - Nur wird dabei nur die Richtungen Rechts-Links-Hoch-Runter behandelt?! Wie kann ich das auf 359 möglichen Richtungen übertragen? :/
Bin nicht gerade der hellste Sad

The Shark

BeitragSa, Jul 26, 2008 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Map besteht aus Tiles? wenn nicht, dann rüste auf tiles um. und wenn due die position des players auf die ungefähre tileposition umrechnest und die 8 tiles rundrum auf kollision mit dem Player prüfst, dann ist es egal, ob der player 4,8 oder 360 Richtungen hat.

Vllt schieb ich nen code nach, aber nur, wenn du beim BCC 17 für mich stimmst (<- Bitte nicht ernst nehmen, das ist ein witz)
 

Düsi

BeitragSa, Jul 26, 2008 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok... Aber woher weiß ich nun, wenn man die Vorwärtstaste drückt, welche der 8 Tiles ich nun auf die Collision überprüfen muss?
 

Whitey

BeitragSa, Jul 26, 2008 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
hey Wink

Ich behaupte der Shark meinte damit das du einfach die acht umliegenden Tiles auf die Collision testen lassen sollst.

mfg Whitey
 

Düsi

BeitragSa, Jul 26, 2008 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, dann könnte er aber nicht nach oben laufen wenn das Tile unter einem eine Collision enthält...?!

kriD

BeitragSa, Jul 26, 2008 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
doch könnte man, wenn man nur die tiles in richtung betrachtet, also beim nach obenlinks fahren das tile darüber, darüber links und links (alle anderen währen eh sinnlos, weil man nie gegen sieh fahren könnte, wenn sie nicht in fahrtrichtung liegen).



lg kriD
Wenn ich du wäre, wäre ich lieber ich!
 

Düsi

BeitragSo, Jul 27, 2008 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm ok... .
Dann nur noch zwei Dinge: Wie kann ich anhanden des Winkels herausfinden, welche Tiles ich nun übprüfen muss, also welche Richtungen?

Und wesshalb funktioniert eigtl. mein Ansatz nicht? Er macht doch im grunde das gleiche wie in diesem Thread nun gesagt wurde...?!

kriD

BeitragSo, Jul 27, 2008 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
sieh dir dazu mal DAS HIER an.
da wird erklährt, wann der sinus bzw cosinus eines winkels positiv oder negativ ist.
damit findest du herraus, in welche richtung dein auto grad fährt..

aber langsam kommts mir leichter vor einfach imagescollise mit deinem auto und allen umliegenden 8 kollisionstiles anzuwenden Very Happy

lg kriD
Wenn ich du wäre, wäre ich lieber ich!
 

Düsi

BeitragMo, Jul 28, 2008 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Edit: Ah... xTmp/yTmp/xTileTmp/yTileTmp waren als Float definiert. - Ohne gehts Smile Problem gelöst Smile

Hm...

Ok, das mit der Richtungs-Ermittlung hab ich nun so einiger maßen verstanden. - Aber wenn ich die Richtung ermitteln soll, dann das ganze durch die Tiles-Größe dividieren muss und dann dass Array in der gegebenenrichtung auf eine Collision prüfe, mache ich eigtl nichts anderes wie in meinem Ansatz. - Dort mache ich schließlich das gleiche, nur damit ich die Position wo man wäre wenn man Laufen würde nach einer Collision prüfen.
Das ganze funktioniert aber im grunde genau so "sonderlich" wie in dem Tut wo der TheShark erwähnt hat, wie man in diesem Tut am letzten Post erkennen kann. Gibt es evtl. ein Tut wo die Collision auf einer Tilemap mit einer PixelbyPixel (nennt man das in etwa so?) besser beschrieben wird bzw. das im Tut beschriebene besser funktioniert? Das von robsite funktion schließlich auch nicht besonders gut. :/

MfG und Danke bis hierhin schonmal Smile


Edit: Btw. wie ich ImageCollide auf ein Array anwenden kann hab' ich jetzt gar nicht verstanden :/

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group