ImagesCollide erkennt Kolli nicht!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Chester

Betreff: ImagesCollide erkennt Kolli nicht!

BeitragDo, Okt 07, 2004 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Titel sagt alles...

Laden und erstellen der Bilder:

Global map = CreateImage(500*32, 25*32)
Global coll_map = CreateImage(500*32,25*32)
Global t1 = LoadImage("GFX\Map\sand.jpg")
Global t2 = LoadImage("GFX\Map\himmel.bmp")
Global lauf_rechts = LoadAnimImage("GFX\Player\lauf1.bmp",60,150, 0, 3)
Global lauf_links = LoadAnimImage("GFX\Player\lauf2.bmp",60,150, 0, 3)
MaskImage lauf_rechts, 255, 0, 255
MaskImage lauf_links, 255, 0, 255


SetBuffer ImageBuffer(map)

For x = 0 To 500
For y = 0 To 20
DrawImage t2, x*32,y*32
Next
Next


SetBuffer ImageBuffer(coll_map)
For x = 0 To 500
For y = 20 To 25
DrawImage t1, x*32, y*32
Next
Next

For x = 5 To 10
For y = 15 To 20
DrawImage t3, x*32, y*32
Next
Next





Hier der Kolli check:

For frame = 0 To 2
boden_kolli1 = ImagesCollide(coll_map, 0+viewx, 0+viewy, 0, lauf_rechts, player\x_pos, player\y_pos,frame)
If boden_kolli2 = 1 Then speed = 0
Next

For frames = 0 To 2
boden_kolli2 = ImagesCollide(coll_map, 0+viewx, 0+viewy, 0, lauf_links, player\x_pos, player\y_pos,frames)
If boden_kolli1 = 1 Then speed = 0
Next


Kann mir mal jemand sagen was ich falsch mache???

Ich überprüfe die Colli indem ich die colli_Variablen mit text ausgebe, aber die ziegen die ganze Zeit 0 an obewohl er mitten durch den Boden fällt !?!

Hubsi

BeitragDo, Okt 07, 2004 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
CreateImage(500*32, 25*32) Meine Graka kann solche Bilder nicht mal anzeigen, vielleicht steigt auch die Hardware aus. Ist aber nur eine Vermutung.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Chester

BeitragDo, Okt 07, 2004 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir macht das nicht Probleme was das angeht....

PS: wie kann man das sonst noch machen?

ABer nachdem diese Frage beendet ist^^ bitte zum thema zurückkejren.

Kabelbinder

Sieger des WM-Contest 2006

BeitragDo, Okt 07, 2004 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch es mal mit:

Code: [AUSKLAPPEN]
 If ImagesCollide(coll_map, 0+viewx, 0+viewy, 0, lauf_rechts, player\x_pos, player\y_pos,frame)  = 1 then
boden_kolli1 = 1
EndIf

Der Grund:

Am Ende der For-Schleife wird der Wert boden_kolli1 nur auf  1 gestellt, wenn das 2. Frame an die map kommt. Er überprüft damit nur das letzte Frame.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Chester

BeitragFr, Okt 08, 2004 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
das verändert auch nichts daran.
 

zocker2150

BeitragDo, Okt 28, 2004 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
HI,

ich würde die Kollision nicht in einer For-Schleife packen.

Mach do die Frame-änderung in einer extra Schleife; ungefähr so...
Code: [AUSKLAPPEN]

   If (frame_time + 100) < MilliSecs() Then
      frame = (frame + 1) Mod 7
      frame_time = MilliSecs()
   End If


Anmerkung: Mod 7 wegen meinen 7 Frames die dieses Animationsbild hat.

Jetzt kannst du ja die Kollision in der Hauptschleife stehen lassen. Am besten so...

Code: [AUSKLAPPEN]
If ImagesCollide(coll_map, 0+viewx,0+viewy,0,  lauf_links, player\x_pos,player\y_pos,frame) Then
      boden_kolli2 = 1
      speed = 0
End If


Bei den anderen "Lauf-Richtungen" genauso...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group