Kollisionsprobleme(noch nicht gelöst)
Übersicht

![]() |
JackBetreff: Kollisionsprobleme(noch nicht gelöst) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, ich habe jetzt einmal versucht, ein kleines RPG mit einer Map und einer Kollisionsabfrage(nur ein Test) zu machen. Hier ist mein Code:
Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() Include "C:\Versuche\mapengine.bb" Global welt1 = map_load("C:\Versuche\Welt1.map") Global figur = LoadAnimImage("C:\Versuche\figur.png") Global figurx = 48 Global figury = 48 Global laufen = False Global sframe = False Global frame Global position = 3 Function kollision(x,y,startx,starty,breite,hoehe) If ImageRectOverlap(Lador,x,y,startx,starty,breite,hoehe) Then If position = 1 Then y = y - 1 ElseIf position = 2 Then x = x + 1 ElseIf position = 3 Then y = y + 1 ElseIf position = 4 Then x = x - 1 EndIf EndIf End Function Function drawspieler() If KeyDown(203) Then laufen = True sframe = 9 figurx = figurx - 4 position = 4 ElseIf KeyDown(205) Then laufen = True sframe = 3 figurx = figurx + 4 position = 2 ElseIf KeyDown(200) Then laufen = True sframe = 1 figury = figury - 4 position = 1 ElseIf KeyDown(208) Then laufen = True sframe = 6 figury = figury + 4 position = 3 Else If laufen = False Then If position = 1 Then sframe = 1 ElseIf position = 2 Then sframe = 4 ElseIf position = 3 Then sframe = 7 ElseIf position = 4 Then sframe = 10 EndIf EndIf EndIf If laufen = True Then frame = (frame + 1) Mod 2 DrawImage figur, figurx,figury, sframe + frame End Function Repeat Cls If KeyDown(1) Then Exit map_draw() drawspieler kollision(figurx,figury,0,0,640,48) Flip Delay 100 Forever Mein Problem: Wenn meine Figur gegen den einen Busch rennt, dann läut sie einfach drüber! Was mache ich falsch? Bin dankbar für jede Hilfe |
||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
- Zuletzt bearbeitet von Jack am Sa, Sep 24, 2005 12:22, insgesamt 2-mal bearbeitet
![]() |
Mr.HydeNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich vermute, dass es damit zusammenhängt, dass du zu sframe noch frame addierst. lass das erst mal weg und pobier es dann noch mal. Wenn es dann geht müsstest du die Mod...Geschicht überarbeiten | ||
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke, aber hab die Probleme schon gelöst:
Ich habe aus Versehen LoadImage geschrieben, aber mit Frames gearbeitet. Außerdem befand sich die Grafik-Datei nicht im Ordner, in dem sich die Map befand. Jetzt geht es wieder, aber ich habe schon wieder ein neues Problem: Mein Programm prüft keine Kollision! Was soll ich denn jetzt machen? Danke schon mal im Voraus |
||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
gamble |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
RPG Tutorial von Robsite.de lesen? | ||
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist das von BlitzMaster? Dann hab ichs schon gelesen. Außerdem machen die das doch mit Tilemaps, und das hab ich schon ausprobiert. | ||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
![]() |
kreisman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du überprüfst bei
Code: [AUSKLAPPEN] If ImageRectOverlap(Lador,x,y,startx,starty,breite,hoehe) Then eine Kollision mit dem Bild Lador. Lador gibt es aber nicht bzw. ist 0. |
||
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das hab ich nur hier geändert, aber danke für deine Hilfe.
Danke schon mal im Voraus |
||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry wegen Doppelpost. Hier mein Code:
Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() Include "C:\Versuche\mapengine.bb" Global welt1 = map_load("C:\Versuche\Welt1.map") Global lador = LoadAnimImage("C:\Versuche\figur.png",16,22,0,12) Global figurx = 48 Global figury = 48 Global laufen = False Global sframe = False Global frame Global position = 3 Global collision = True Global hgrund = welt1 MaskImage lador, 255,255,255 Function kollision(x,y,startx,starty,breite,hoehe) If ImageRectOverlap(figur,x,y,startx,starty,breite,hoehe) Then Return 1 If position = 1 Then y = y - 1 ElseIf position = 2 Then x = x + 1 ElseIf position = 3 Then y = y + 1 ElseIf position = 4 Then x = x - 1 Else Return 0 EndIf EndIf End Function Function drawspieler() If KeyDown(203) Then laufen = True sframe = 9 figurx = figurx - 4 position = 4 ElseIf KeyDown(205) Then laufen = True sframe = 3 figurx = figurx + 4 position = 2 ElseIf KeyDown(200) Then laufen = True sframe = 1 figury = figury - 4 position = 1 ElseIf KeyDown(208) Then laufen = True sframe = 6 figury = figury + 4 position = 3 Else laufen = False If laufen = False Then If position = 1 Then sframe = 1 ElseIf position = 2 Then sframe = 4 ElseIf position = 3 Then sframe = 7 ElseIf position = 4 Then sframe = 10 EndIf EndIf EndIf If laufen = True Then frame = (frame + 1) Mod 2 DrawImage figur, figurx,figury, sframe + frame End Function Repeat Cls If KeyDown(1) Then Exit map_draw() drawspieler If collision = True Then If hgrund = welt1 Then If figury < 48 Then figury = 48 EndIf If figurx < 48 Then figurx = 48 EndIf If figurx > 608 Then figurx = 608 EndIf EndIf If figury = 480 Then welt2 = map_load("C:\Versuche\Welt2.map") hgrund = welt2 map_draw() figury = 4 If figurx = 576 Then If figury = 0 Then hgrund = welt1 EndIf EndIf EndIf EndIf Flip Delay 100 Forever Die Kollision der ersten Map, wird bei der zweiten auch geprüft. Wie kann ich das verhindern? Oder hat jemand von euch eine bessere Funktion? Bin dankbar für jede Hilfe |
||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
![]() |
kreisman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Fehler liegt hier:
Code: [AUSKLAPPEN] If ImageRectOverlap(figur,x,y,startx,starty,breite,hoehe) Then Return 1 mit return 1 verlässt du die Funktion.Das was danach steht wird nicht mehr ausgeführt. |
||
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, da liegt der Fehler nicht. Hat jemand eine andere Funktion, oder hat jemand einen Fehler entdeckt? Bitte mir sagen.
Bin dankbar für jede Hilfe |
||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
![]() |
kreisman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was genau willst du eigentlich Kollidieren lassen ???
Soll die Figur mit Tiles auf der Map koolidieren? |
||
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, genau, aber nicht mit einer Tilemap, sondern von einer Map von hier. | ||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group