Kollisionsprobleme(noch nicht gelöst)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Jack

Betreff: Kollisionsprobleme(noch nicht gelöst)

BeitragFr, Sep 23, 2005 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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.Hyde

Newsposter

BeitragFr, Sep 23, 2005 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Sep 24, 2005 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Sep 24, 2005 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
RPG Tutorial von Robsite.de lesen?

Jack

BeitragSa, Sep 24, 2005 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Sep 24, 2005 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Sep 25, 2005 10:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Sep 25, 2005 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Sep 25, 2005 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Sep 26, 2005 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Sep 26, 2005 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Was genau willst du eigentlich Kollidieren lassen ???
Soll die Figur mit Tiles auf der Map koolidieren?

Jack

BeitragDi, Sep 27, 2005 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group