Imagecollide mit Type und AnimImage
Übersicht

bubbaBetreff: Imagecollide mit Type und AnimImage |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo liebes Forum!
Nach einigem Rumrätseln und Suchen habe ich keine Antwort gefunden, warum das folgende Beispiel nicht funktioniert. Bei der Kollisionabfrage wird immer nur die zuletzt erstellte Explosion betrachtet. Sehr seltsam, dass das DrawImage für die verschiedenen Objekte funktioniert und das ImagesCollide nicht. Vielen Dank für eure Ratschläge! ![]() Code: [AUSKLAPPEN] Graphics 640,480 Local URL:String="http::www.2dgamecreators.com/tutorials/gameprogramming/basic/" Local Player:TImage=LoadImage(LoadBank(URL+"blobship_1-1.png")) 'Local AlienBild:TImage=LoadAnimImage(LoadBank(URL+"exp1.png"),64,64,0,16) Local Frame:Int=0 Local AnimDelay:Int=10 Type TAlien Field bild:TImage Field x:Int Field y:Int Method Create:TAlien(_bild:String,_x,_y) bild = LoadAnimImage(LoadBank("http::www.2dgamecreators.com/tutorials/gameprogramming/basic/"+_bild),64,64,0,16) x = _x y = _y Return Self End Method Method draw(_frame:Int,_Player:TImage) DrawImage(bild,x,y,_frame) If ImagesCollide(bild,x,y,_frame,_Player,MouseX(),MouseY(),0) Then SetClsColor 255,0,0 Else SetClsColor 0,0,0 EndIf End Method End Type Local alienList:TList = New(TList) Local alien:TAlien = New(TAlien).Create("exp1.png",150,200) alienlist.AddLast(alien) alien = New(TAlien).Create("exp1.png",250,200) alienlist.AddLast(alien) alien = New(TAlien).Create("exp1.png",350,200) alienlist.AddLast(alien) While Not KeyHit(key_escape) Or AppTerminate() Cls DrawImage Player,MouseX(),MouseY() For Local a:TAlien = EachIn alienList a.draw(Frame,Player) Next Flip If AnimDelay<0 Then Frame :+ 1 If Frame>15 Then Frame=0 AnimDelay=10 EndIf AnimDelay :- 1 Wend End |
||
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist das mit dem SetCLSColor. Du Fragst eine Kollision z.b. beim ersten Objekt ab und setzt die Farbe auf rot. Danach prüft das Programm die nächste Kollision mit dem zweiten Objekt und setzt die Farbe wieder auf normal. So kann der Effekt den du zur Darstellung der Kollision gewählt hast nur beim letzten Objekt funktionieren.
Probiers lieber so: Code: [AUSKLAPPEN] Graphics 640,480 Local URL:String="http::www.2dgamecreators.com/tutorials/gameprogramming/basic/" Local Player:TImage=LoadImage(LoadBank(URL+"blobship_1-1.png")) 'Local AlienBild:TImage=LoadAnimImage(LoadBank(URL+"exp1.png"),64,64,0,16) Local Frame:Int=0 Local AnimDelay:Int=10 Type TAlien Field bild:TImage Field x:Int Field y:Int Field r:Int, g:Int, b:Int Method New() r = 255 g = 255 b = 255 End Method Method Create:TAlien(_bild:String,_x,_y) bild = LoadAnimImage(LoadBank("http::www.2dgamecreators.com/tutorials/gameprogramming/basic/"+_bild),64,64,0,16) x = _x y = _y Return Self End Method Method draw(_frame:Int,_Player:TImage) If ImagesCollide(bild,x,y,_frame,_Player,MouseX(),MouseY(),0) Then r = 255 g = 0 b = 0 Else r = 255 g = 255 b = 255 EndIf SetColor r,g,b DrawImage(bild,x,y,_frame) SetColor 255,255,255 End Method End Type Local alienList:TList = New(TList) Local alien:TAlien = New(TAlien).Create("exp1.png",150,200) alienlist.AddLast(alien) alien = New(TAlien).Create("exp1.png",250,200) alienlist.AddLast(alien) alien = New(TAlien).Create("exp1.png",350,200) alienlist.AddLast(alien) While Not KeyHit(key_escape) Or AppTerminate() Cls DrawImage Player,MouseX(),MouseY() For Local a:TAlien = EachIn alienList a.draw(Frame,Player) Next Flip If AnimDelay<0 Then Frame :+ 1 If Frame>15 Then Frame=0 AnimDelay=10 EndIf AnimDelay :- 1 Wend End |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
bubbaBetreff: Danke! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh, da wäre ich ja nie drauf gekommen ![]() ![]() Vielen Dank! |
||
![]() |
Suco-XBetreff: ...... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du wirst wohl lernen müssen diese Sachen in Gedanken nachzuvollziehen. Aber solange du deine Probleme immer so ausführbar postest, wird dir sicher immer jemand helfen.
Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group