Problem mit Tile-Kollision
Übersicht

![]() |
Flori-DBetreff: Problem mit Tile-Kollision |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich habe vor sone Art Heißer Draht Spiel zu entwickeln.Level 1 Und sois schon design allerdings hab ich ein Problem.Die Kollsision mit den Mauern da weiß ich einfach nicht wie ichs angehen soll.Bitte helft mir.Hier auch mal stückchen code:
Spiel.bb: Code: [AUSKLAPPEN] Dim Level$(16,20)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Levels von Festplatte lesen;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; leveldatei = ReadFile("map_1.txt") For Zeile= 0 To 14 A$ = ReadLine(leveldatei) For Spalte=0 To 19 B$ = Mid$(A$,Spalte+1,1) Level$(Zeile,Spalte) = B$ Next Next CloseFile leveldatei ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Hauptschleife;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Repeat Cls ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Menu;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;DrawImage maus,MouseX(),MouseY() DrawImage menue_button_1, 250,100 DrawImage menue_aktiv,aktiv_x,aktiv_y If ImagesOverlap(menue_aktiv,aktiv_x,aktiv_y, menue_button_1,250,100) Then If KeyHit(57) Then SetBuffer BackBuffer() Repeat Cls level_1() Until KeyHit(1) EndIf EndIf Flip Until KeyHit(1) level1.bb: Code: [AUSKLAPPEN] Function level_1()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Level zeichnen;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; For Zeile=0 To 14 For Spalte=0 To 19 Select Level$(Zeile,Spalte) Case "1" DrawImageRect tiles, Spalte*32, Zeile*32, 580, 206, 32, 32 ;Case " " ;DrawImageRect tiles, Spalte*32, Zeile*32, 2, 342, 32, 32 End Select Next Next ;For I = 0 To 1 DrawImage player, MouseX(),MouseY() ;Flip ;Delay 200 ;Next ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Spieler bewegung;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; If ImagesOverlap(player,MouseX(),MouseY(),tiles, 1, 1) Then End;was muss ich da machen? Flip End Function Mfg Flori-D |
||
BB is Macht!
Homepage: www.flori-d.de |
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du berechnest, in welchem Tile sich die Maus befindet. (MX/16 oder ähnlich)
Dann fragst du ab dieses Tile eine Mauer ist. Wenn Ja, Maus stirbt, wenn nein nichts machen. Wenn jetzt die Tilegrafik kleiner al die Tilegrösse ist, kannst du ja noch mit ImageRectsOverlap abfragen, ob sie kolliedieren.... |
||
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ungefähr so mit der Berechnung?:
Code: [AUSKLAPPEN] For X=0 To 20 For Y=0 To 20 tile_x = 0 tile_y = 0 tile_x = tile_x +32 tile_y = tile_y +32 If MouseX() = tile_x Then if MouseY() = tile_y Then Text 200,200,"Kollision!" Endif Endif Next Next Mfg Flori-D |
||
BB is Macht!
Homepage: www.flori-d.de |
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich ahbs immer noch nicht gecheckt bitte helft mir.
Mfg Flori-D |
||
BB is Macht!
Homepage: www.flori-d.de |
ke^kx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Probiers mit:
Code: [AUSKLAPPEN] if Level(MouseX () / 32, MouseY() / ...) = Mauer then;Ich weis jetzt nicht wie viele tiles du jeweils verwendest text 100, 100 "Kollision" endif Mauer musst du natürlich durch die Ziffer des Mauer Tiles ersetzen. Viel Glück, Jiriki |
||
http://i3u8.blogspot.com
Asus Striker II Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-) Geforce 9800 GTX 2GB RAM |
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
THX klappt fast.Ich ahbe jetzt das Problem das manchmal ne Kolli ist wo keine Mauer ist.Oder das ich über ne Mauer gehe und es ist keine Kollision wiso?
Mfg Flori-D |
||
BB is Macht!
Homepage: www.flori-d.de |
ke^kx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Poste hier mal deinen Code, mit den wichtigsten Teilen. Dann guck ich nochmal.
Jiriki |
||
http://i3u8.blogspot.com
Asus Striker II Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-) Geforce 9800 GTX 2GB RAM |
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier mal der wichtigste Teil:
Code: [AUSKLAPPEN] Function level_1()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Level zeichnen;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; For Zeile=0 To 14 For Spalte=0 To 19 Select Level$(Zeile,Spalte) Case "1" DrawImageRect tiles, Spalte*32, Zeile*32, 580, 206, 32, 32 ;Case " " ;DrawImageRect tiles, Spalte*32, Zeile*32, 2, 342, 32, 32 End Select Next Next ;For I = 0 To 1 DrawImage player, MouseX(),MouseY() ;Flip ;Delay 200 ;Next ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Spieler bewegung;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; If Level$(MouseX()/32, MouseY() /32) = 1 Then Text 100, 100 "Kollision" Endif Flip End Function |
||
BB is Macht!
Homepage: www.flori-d.de |
ke^kx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit welcher Auflösung arbeitest du? Wenn du mit 640*480 arbeitest, sollte dein Level (wenn es einen Bildschirm bedecken soll) 20*15 Tiles a 32*32 Pixel groß sein. Dann müsste es funktionieren
Und was soll das: Zitat: ;For I = 0 To 1 DrawImage player, MouseX(),MouseY() ;Flip ;Delay 200 ;Next Erstens: Warum ist das auskommerntiert? Zweitens: Wieso die For-Next-Schleife? du hast doch nur einen Player, oder? Ich hoffe, dass ich dir helfen konnte, Jiriki |
||
http://i3u8.blogspot.com
Asus Striker II Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-) Geforce 9800 GTX 2GB RAM |
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja wred das mit de Level probieren thx.Das auskomentierte war mal von nem Playeer der Animiert war.Aber die Animation war zu schnell.Hatte kein Bock das jetzt mit Timern zu beheben.
Mfg Flori-D |
||
BB is Macht!
Homepage: www.flori-d.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group