ImagesCollide

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Johann der 2.

Betreff: ImagesCollide

BeitragSa, Dez 13, 2008 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ein problem mit images colide ja ich will eine animation mit einem Bild collidieren lassen heir der ganze code(ohne images colide wie müsste es richtig aussehen das die imagescolliede erst dann anschlägt wenn beide sich berühren?)
Code: [AUSKLAPPEN]
Graphics 640, 480
SetBuffer BackBuffer ()
S1=LoadImage ("s1.bmp")
S2=LoadImage ("s2.bmp")
Variable=LoadAnimImage ("schuss1.bmp",640,8,0,60)
Leben2=10
schuss1=1
Timer=0
Munitionnormal=5
Nachladen=5
Print "Start = Enter"
Print "Beenden = Q"
WaitKey
If KeyHit (16) Then End
If KeyHit (28) Then While Not KeyHit (16)
Cls
Print "Munition"
Print Munitionnormal
Print "Leben Spieler 2"
Print Leben2
DrawImage s1,x1,y1
DrawImage s2,x2,y2
If KeyDown(208) And y1=<405 And gehen=1 Then
     y1=y1+4
EndIf
If KeyDown(200) And y1=>0 And gehen=1 Then
     y1=y1-4
EndIf
If KeyDown(80) And y2=<405 And gehen=1 Then
     y2=y2+4
EndIf
If KeyDown(72) And y2=>0 And gehen=1 Then
     y2=y2-4
EndIf
If KeyHit(157) And Timer=0 And Munitionnormal>0 Then Abspielen=1:
If Abspielen=1   Then
  DrawImage Variable,x1,y1+30 ,Frame
  Frame=Frame+1:Timer=Timer+1:
  gehen=0
  If Frame>59 Then Abspielen=0: Frame=0:Munitionnormal=Munitionnormal-1:gehen=1 
If Timer=10 Then Timer=0
EndIf
If KeyHit (54) And Munitionnormal=0 Then Munitionnormal=Munitionnormal+Nachladen
Flip
Wend

Schonmal danke für antworten
mfg Johann

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Dez 13, 2008 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Hilfe steht es eigendlich gut beschrieben. Ich wüsst jetzt nicht, wie ich es besser ausdrücken könnte. Probiere doch erst mal, und wenn du dann nicht weiter kommst, wird dir auch sicherlich geholfen.

ImagesCollide Wie du unschwer erkennen kannst, werden auch Frames bei der Kollision unterstüzt.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Johann der 2.

BeitragSo, Dez 14, 2008 0:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist an dieser kollision falsch?
Code: [AUSKLAPPEN]

If ImagesCollide (Variable,x1,y1,59,S2,x2,y2,0) Then
treffer=1
EndIf
If treffer=1 Then
leben2=leben2-1:treffer=0
EndIf   

Wenn ich jetzt noch nicht einmal variable abspiel also meine animation dnan verliert der gegner schon leben obwohl er erst bei kollision leben verlieren soll die animation ist ein kleienr punkt der von der einen seite des bildschirms zu anderen fleigt wenn er s2 berührt soll s2 leben verlieren.
Hier wieder der ganze Code:

Code: [AUSKLAPPEN]
Graphics 640, 480
SetBuffer BackBuffer ()
S1=LoadImage ("s1.bmp")
S2=LoadImage ("s2.bmp")
Variable=LoadAnimImage ("schuss1.bmp",640,8,0,60)
Leben2=10
schuss1=1
Munitionnormal=5
Nachladen=5
Print "Start = Enter"
Print "Beenden = Q"
WaitKey
If KeyHit (16) Then End
If KeyHit (28) Then While Not KeyHit (16)
Cls
Print "Munition"
Print Munitionnormal
Print "Leben Spieler 2"
Print Leben2
DrawImage s1,x1,y1
DrawImage s2,x2,y2
If KeyDown(208) And y1=<405 And gehen=1 Then
     y1=y1+4
EndIf
If KeyDown(200) And y1=>0 And gehen=1 Then
     y1=y1-4
EndIf
If KeyDown(80) And y2=<405 And gehen=1 Then
     y2=y2+4
EndIf
If KeyDown(72) And y2=>0 And gehen=1 Then
     y2=y2-4
EndIf
If KeyHit(157) And  Munitionnormal>0 Then Abspielen=1:
If Abspielen=1   Then
  DrawImage Variable,x1,y1+30 ,Frame
  Frame=Frame+1:
  gehen=0
  If Frame>59 Then Abspielen=0: Frame=0:Munitionnormal=Munitionnormal-1:gehen=1 
 EndIf
If KeyHit (54) And Munitionnormal=0 Then
Munitionnormal=Munitionnormal+5
EndIf
If ImagesCollide (Variable,x1,y1,59,S2,x2,y2,0) Then
treffer=1
EndIf
If treffer=1 Then
leben2=leben2-1:treffer=0
EndIf   
Flip
Wend

Und noch eine frage bei mir flimmert das immer so wie kann ich das ändern?
Schonmal dnake für die antworten.
Mfg Johann

Xeres

Moderator

BeitragSo, Dez 14, 2008 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum nennst du eine Variable tatsächlich "Variable" ? Da kann ja kein Mensch durchsehen was wo passiert.
Warum prüfst du mit Frame 59 auf Kollision, und nicht dem aktuellen?
Code: [AUSKLAPPEN]
If ImagesCollide (Variable,x1,y1,59,S2,x2,y2,0) Then
      treffer=1
   EndIf
   If treffer=1 Then
      leben2=leben2-1:treffer=0
   EndIf

Die Abfrage macht die Variable "treffer" nutzlos, weil sie in jedem Schleifendurchlauf Wahr ist, wenn eine Kollision stattfindet. Setzte treffer erst zurück, wenn keine Kollision mehr stattfindet.
Print wird immer auf dem Frontbuffer ausgegeben, benutzte stattdessen Text.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Johann der 2.

BeitragSo, Dez 14, 2008 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok ich werde dann text benutzen aber wie würde dann eine richtige kollision bei meinem code heißen ich habe schon rumprobiert nur das hat niht ganz so funktioniert und das mit variable das ist sozusagen ein kleines test spiel das sich nicht groß weiter ausbreiten wird halt nur zu testen deshalb ist das ganze nicht wirklich aufgeräumt und übersichtlich mit functionen usw. was ich mir erst aneignen muss.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group