kollision bei schuss

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: kollision bei schuss

BeitragMi, Sep 13, 2006 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 640,480,16,3

Type Schuss
Field x,y
End Type

kugel=LoadImage("kugel.bmp")
MaskImage kugel,0,0,255
player=LoadImage("player.bmp")
MaskImage player,0,0,255
a=LoadImage("a.bmp")
 
SetBuffer BackBuffer()

Repeat
Cls

DrawImage a,20,20
DrawImage player, x,y


If KeyDown(28) Then

s.schuss = New schuss
s\x = x +20
s\y = y

EndIf

For s.schuss= Each schuss

DrawImage kugel,s\x,s\y
s\y=s\y - 3
If s\y < 1 Then Delete s

Next

If KeyDown(200) Then y=y-1    ;Oben
   If KeyDown(208) Then y=y+1   ;Unten
   If KeyDown(203) Then x=x-1   ;Links
   If KeyDown(205) Then x=x+1    ;Rechts
   
 
 


Flip
Until KeyHit(1)



Wie ´teste ich jetzt eine kollision zwischen dem schuss und dem bild a?

Smokie

BeitragMi, Sep 13, 2006 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
bei der schleife:

Code: [AUSKLAPPEN]


for s.schuss = each schuss

      if imagescollide(kugel,s\x,s\y,0,a,20,20,0) then
             
             ; Add funky code here

      endif

...

next



Sollte sich eigendlich von selbst erklären. Der Wert nach der y Koordinate ist der Frame des Bildes, wenn es keine Animtation ist kann man 0 angeben.

Grüße
Smokie
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer.
Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört
Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet

mas93

BeitragMi, Sep 13, 2006 15:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke funktioniert!!

aber warum wird hir der scuss nicht vor dem Player angezeigt???
Code: [AUSKLAPPEN]


Graphics 640,480,16,2

Type Schuss
Field x,y
End Type

schuss=LoadImage("schuss.bmp")
player=LoadImage("player1.png")
MaskImage player,0,0,255
a=LoadImage("a.bmp")
 
SetBuffer BackBuffer()

Repeat
Cls

If KeyDown(200) Then y=y-1    ;Oben
   If KeyDown(208) Then y=y+1   ;Unten
   If KeyDown(203) Then x=x-1   ;Links
   If KeyDown(205) Then x=x+1    ;Rechts
   
DrawImage player, x,y   
DrawImage a,20,20

If KeyHit(57) Then
s.schuss = New schuss
s\x = x
s\y = y

EndIf

For s.schuss= Each schuss

If ImagesCollide(schuss,s\x,s\y,0,a,20,20,0) Then End
 

DrawImage schuss,s\y,s\x
s\y=s\y -3
 
If s\y < 1 Then Delete s

Next

 



Flip
Until KeyHit(1)



Schranz0r

BeitragMi, Sep 13, 2006 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich weis ja jetzt net wie groß dein Spieler ist, aber bei sagen wir 50px (Y) , mach mal so.


Code: [AUSKLAPPEN]

If KeyHit(57) Then
s.schuss = New schuss
s\x = x
s\y = y-50


dann solte es vor den Spieler sein.

Am besten machst du noch

Code: [AUSKLAPPEN]
Midhandle player


aber dann ist bei einen 50px großen player

Code: [AUSKLAPPEN]
s\y = y-25


EDIT:

Smokie hatte recht nach oben ^^ also -50
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • Zuletzt bearbeitet von Schranz0r am Mi, Sep 13, 2006 15:52, insgesamt 4-mal bearbeitet

Smokie

BeitragMi, Sep 13, 2006 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Wegen der Reihenfolge. Stell dir vor du mals ein Bild:

Erst ein Quadrat dann in das Quadrat noch 5 kreise. Die Kreise überdecken das Quadrat. So ist es auch bei BB, du musst immer das, was ganz "oben" sein soll als letztes zeichnen.

Wenn das nicht das Problem ist nimm Schranzors Lösung, nur statt + 50 - 50 da die Kugel ja nach oben fliegt.

Grüße
Smokie
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer.
Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört
Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group