[Erledigt] GtaSteuerung - Collision
Übersicht

DüsiBetreff: [Erledigt] GtaSteuerung - Collision |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau dir das mal an:
https://www.blitzforum.de/foru...php?t=5286 |
||
Düsi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
![]() |
The Shark |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey ![]() Ich behaupte der Shark meinte damit das du einfach die acht umliegenden Tiles auf die Collision testen lassen sollst. mfg Whitey |
||
Düsi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, dann könnte er aber nicht nach oben laufen wenn das Tile unter einem eine Collision enthält...?! | ||
![]() |
kriD |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() ![]() lg kriD |
||
Wenn ich du wäre, wäre ich lieber ich! |
Düsi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Edit: Ah... xTmp/yTmp/xTileTmp/yTileTmp waren als Float definiert. - Ohne gehts ![]() ![]() 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 ![]() Edit: Btw. wie ich ImageCollide auf ein Array anwenden kann hab' ich jetzt gar nicht verstanden :/ |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group