Tile Kollision...
Übersicht

![]() |
relentless92Betreff: Tile Kollision... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Huhu,
Ich weis, darüber gibts schon elendig viele Themen (wie mir die Boardsuche bewies), doch ich habe trotz der ganzen Tipps nichts auf die Reihe bekommen. Code: [AUSKLAPPEN] ;AppTitel ---------------------- AppTitle "eJump" Graphics 640,480,TILESIZE,2 SetBuffer BackBuffer() timer=CreateTimer(60) SeedRnd MilliSecs() ;Globals ----------------------- Global mapbreite=19 Global maphoehe=14 Global tileset Global mapfile$ Global x Global y Global keintile Global mannX=20 Global mannY=384 Global mannSpeed=3 Global springen=0 Global sprunghoehe ;CONST ------------------------- Const TILESIZE=32 ;Laden ------------------------- tileset = LoadAnimImage("tileset1.png",TILESIZE,TILESIZE,0,18) ;Maskimage --------------------- MaskImage tileset,255,0,255 ;Sonstiges --------------------- Dim map$(mapbreite,maphoehe) ;Background mapfile$ = ReadFile("Map.txt") ;Der Level ;Leveldatei auslesen und Wert in Array schreiben For y = 0 To maphoehe For x = 0 To mapbreite wert = ReadByte(mapfile$) map$(x,y) = wert - 97 Next Next ;HAUPTSCHLEIFE HAUPTSCHLEIFE HAUPTSCHLEIFE HAUPTSCHLEIFE Repeat LevelMalen() Mann() Kollisionen() Flip Cls WaitTimer timer Until KeyHit(1) ;ENDE ;FUNCTIONS Function LevelMalen() Color 40,239,246 ;Himmelsfarbe Rect 0,0,640,480,1 ;Himmel For x = 0 To mapbreite ;BG Malen For y = 0 To maphoehe Select map$(x,y) Case 0 DrawImage (tileset,x*TILESIZE,y*TILESIZE,0) Case 1 DrawImage (tileset,x*TILESIZE,y*TILESIZE,1) Case 2 DrawImage (tileset,x*TILESIZE,y*TILESIZE,2) Case 3 DrawImage (tileset,x*TILESIZE,y*TILESIZE,3) Case 4 DrawImage (tileset,x*TILESIZE,y*TILESIZE,4) Case 5 DrawImage (tileset,x*TILESIZE,y*TILESIZE,5) Case 7 DrawImage (tileset,x*TILESIZE,y*TILESIZE,7) Case 8 DrawImage (tileset,x*TILESIZE,y*TILESIZE,8) Case 16 DrawImage (tileset,x*TILESIZE,y*TILESIZE,16) Case 17 DrawImage (tileset,x*TILESIZE,y*TILESIZE,17) End Select Next Next End Function ;;;;;;;;;;;;; Function Mann() DrawImage (tileset,mannX,mannY,6) ;Mann malen Oberhälfte DrawImage (tileset,mannX,mannY+TILESIZE,15);Unterhälfte If KeyDown(205) ;Nach Rechts mannX=mannX+mannSpeed If KeyDown(205) And KeyDown(29) ;Rennen rechts mannX=mannX+(mannSpeed+2) EndIf EndIf If KeyDown(203) ;Nach Links mannX=mannX-mannSpeed If KeyDown(203) And KeyDown(29) ;Rennen links mannX=mannX-(mannSpeed+2) EndIf EndIf ;Springen If KeyHit(57) And springen=0 Then sprunghoehe=1 springen=1 EndIf If springen=1 Then mannY=mannY-6 sprunghoehe=sprunghoehe+1 EndIf If sprunghoehe=20 Then springen=3 sprunghoehe=1 EndIf If springen=3 Then mannY=mannY+6 EndIf If mannY>=408 Then springen=0 EndIf ;Gesprungen End Function ;;;;;;;;;;;;;; Function Kollisionen() End Function "MAP.TXT" Code: [AUSKLAPPEN] zzzzzzzzzzzhizzzzzzzzzzzzzzzzzzqrzzzhizzzzzzzzzzzzzzzzz
zqrzzzzzzzzzzzzzzzzzzzzzzhizzzzzzzzzzzzzzzzzzqrzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzddfdzddfdzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzabczzzzzzzzzzabceeeeeeeeeee eeeeeeeeee ;Diese Zeilenumbrüche existieren eigentlich gar nicht! Habe sie nur wegen dem Forum gemacht. Und zwar, habe ich mir TuT's zum Thema nebenan abfragen und Kollision überprüfen angeschaut... Also zB. das mit der 3Dimension, allerdings weis ich nicht wo ich die True und False Werte finden/Speichern soll. Die Sache, noch ein Dim Feld zu erstellen, welche nur 1 oder 0 enthält, bringt mich irgendwie auch nicht weiter, da ich nicht weis, wie ich das alles mit ImagesCollide verabeiten soll. Sowieso glaube ich, das meine Level-Einlese Funktionen nicht so ganz richtig sind. Aber funktionieren tut alles! MfG |
||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit ImagesCollide musst du da eigentlich nichts machen. Du musst einfach machen:
Code: [AUSKLAPPEN] TileRechtsNebenan = MapArray(SpielerX+1, SpielerY)
Und beim Bewegen abfragen ob das jeweilige Feld leer ist. |
||
![]() |
Archangel |
![]() Antworten mit Zitat ![]() |
---|---|---|
um das obrige zu ergänzen:
INFORMATION ZUM NACHFOLGENDEN: Code: [AUSKLAPPEN] Dim map(5,5) kleine map mit einer Größe von 36 Feldern !ACHTUNG! "0" wird mitgezählt, also 0-5 sind 6 Zahlen. 6*6=36
Global px,py; Spielerkoordinaten Global x,y; Mapkoordinaten Global tileset=LoadAnimImage("tileset.bmp",32,32,0,2); Lade tileset mit 2 tiles á 32*32 Pixel Repeat For x = 0 to 5 For y = 0 to 5 DrawImage tileset,x*32,y*32,tile Next Next If pfeiloben=1 and map(px,py-1) <> tile then py=py-1 Until KeyHit(1) Erklärung: Code: [AUSKLAPPEN] If pfeiloben=1 and map(px,py-1) <> tile then py=py-1
Das ist dann mal eine einfache Steuerung =) Wenn pfeiloben (die Taste Pfeil hoch^^) gedrückt wird und deiner Figur kein Tile im "Weg" steht dann gehst du nach oben. Wenn jetzt allerdings: Code: [AUSKLAPPEN] map(px,py-1) <> tile
nicht zutrifft dann bewegt sich deine Figur auch nicht nach oben! |
||
Kaddy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey,
wenn ich das jetzt richtig verstanden habe, dürfte dir einen ausschnitt aus meinen früheren nebenprojekt helfen. Alle tiles die größer als 2 sind , sind nicht(!) begehbar BlitzBasic: [AUSKLAPPEN] ;Die Bewegung |
||
Bin Aktuell auf der Suche nach einen Programmierer Team, ob Hobby Team oder Firma ist egal. Einfach eine PM an mich schreiben.
Bezahlung verlange ich NATÜRLICH keine ![]() Es gibt 10 arten von Menschen, die einen verstehen das Binärsystem , die anderen nicht ![]() ![]() |
![]() |
Archangel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein Flasch ... nicht alle tiles die größer sind als 2 sind nicht begehbar!
"<" heißt: KLEINER ALS , und die nächste Zahl ist eine 2. Also folgt Wenn Code: [AUSKLAPPEN] map(px+1,py) < 2 true (wahr) wird dann folgt der Rest!
Also Code: [AUSKLAPPEN] map(px+1,py) < 2 heißt:
map(px+1,py) kleiner als (ersetzt durch "<") 2 THEN rest |
||
Kaddy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oh, nur n Tipp fehler | ||
Bin Aktuell auf der Suche nach einen Programmierer Team, ob Hobby Team oder Firma ist egal. Einfach eine PM an mich schreiben.
Bezahlung verlange ich NATÜRLICH keine ![]() Es gibt 10 arten von Menschen, die einen verstehen das Binärsystem , die anderen nicht ![]() ![]() |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group