animation nur einmal abspielen
Übersicht

snörklBetreff: animation nur einmal abspielen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, ich möchte eine art moorhuhnclon (wo hab ich das schonmal gehört^^) proggen und bin jetzt auch soweit, das ich auf ein alien schießen kann und wenn ichs treffe auch ein einschussloch erscheint. Nun möchte ich ja, das blut aus diesem einschussloch rinnt. Da ist mein problem. Denn wenn ich das ganze normal mit animimage mache, rinnt immer wieder neues blut aus der wunde, außerdem läuft die animation für jedes einschussloch (also jeden type) gleich ab. Ich poste mal meinen code, die frameroutine ist mein problem:
Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() ;types Type schuss Field x,y End Type Global tmrblut=MilliSecs() Global frame=0 Global alienx=80,alieny=80 ;loadimages alien=LoadImage("alien.png") MaskImage alien, 255,0,255 MidHandle alien pointer=LoadImage("pointer.png") MaskImage pointer, 0,0,0 einschussloch=LoadAnimImage("einschussloch\splatter.png",70,70,0,4) MaskImage einschussloch,254,254,254 ;hauptschleife beginnt HidePointer() While Not KeyHit(1) mx=MouseX() my=MouseY() ;////////////////////////Alien/////////////////////////// DrawImage alien,alienx,alieny ;/////////////////Pointer//////////////// DrawImage pointer,MouseX(),MouseY() ;/////////////////////////frameroutine//////////////////// If frame < 4 If frame = 0 If MilliSecs()>tmrblut + 1000 tmrblut=MilliSecs() frame=(frame+1) Mod 4 EndIf EndIf If frame=>1 If MilliSecs()>tmrblut + 100 tmrblut=MilliSecs() frame=(frame+1) Mod 4 EndIf EndIf EndIf ;//////////////////////////Schuss////////////////////////// If MouseHit(1) And ImagesCollide(alien,alienx,alieny,0,pointer,mx,my,0) schuss.schuss=New schuss schuss\x = Mx +10 schuss\y = MY +9 EndIf For schuss=Each schuss DrawImage einschussloch,schuss\x,schuss\y,frame Next ;;;;;;;;;;;;;;;;;;;;;;; Flip Cls Wend End Ich hoffe ihr könnt mir helfen, mfg, Snörkl |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm hab etz nur kurz überflogen, aber warum speicherst du die einschusslöcher in einem type und ned die aliens ? Zu deinem Frame problem gibts 2 möglichkeiten:
1. Du stoppst die ani einfach: if frame <4 then frame = frame +1 Sobald frame 4 erreicht, bleibt das letze bild stehen. 2. Oder du löscht bei erreichen des 4ten frames gleich das alien if frame = 4 then delete info.alien (man kann noch kleine timer einbauen damit es nicht so schnell und ruckartig wird) aufjeden fall würd ich erstmal die aliens in nem type speichern, weil "alien-moorhuhn" mit einem einzigen hünchen kommt komisch ^^. Also so inetwa: Code: [AUSKLAPPEN] field blup field blup_x field blup_y field blup_richtung ; verschiedene richtungen, wo die herkommen end type So und wenn du nun mit deinen "pointer" auf das alian ballerst, dan einfach die sterbe ani abspielen und beim letzten frame stoppen, bzw. bei erreichen des letzen frames löschen. Ich hoffe, dass dir des weiterhilft mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
vielen dank, ich hätte die aliens später noch in nen type gepackt, aber ich wollte erstmal mit der schussfunktion spielen^^. Ich probiers jetzt erstmal mit stoppen aus, dann schau ich weiter ![]() mfg, Snörkl EDIT: Nun zeigt er mir nur leider an, das image frame out of range wäre ^^. Anscheinend zählt er noch weiter ![]() |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ne zählen tut der nimma ... vielleicht mal <3
~EDIT~ hab schnell mal n progi geschrieben und des Problemchen gelöst... Des alien bild (aa) kanst ja schnell durch irgendwass billiges ersetzen (3 32x32 farbige kästechen z.B.) halt als animantionsbild. ![]() Code: [AUSKLAPPEN] Graphics 800,600,32 SetBuffer BackBuffer() ;globals Global frame,counter,x,y Global ani = False ;gfx Global lol = LoadAnimImage("aa.bmp",32,32,0,3) Global maus = LoadImage("maus.bmp") ;hauptschleife Repeat Cls alien_tot() ;die ani function pointer() ;die Maus/Fadenkreuz ... Flip Until KeyHit(1) Function pointer() x = MouseX() y = MouseY() DrawImage maus,x,y End Function Function alien_tot() ;bei treffer ani starten If ImagesCollide(maus,x,y,0,lol,200,200,0) And MouseDown(1) Then ani = True ;Zähler varriable damit man die einzelbilder überhaupt sehen kann If ani = True And frame <2 Then counter = counter +1 ;immer wen 10 erreicht nächsten frame zeichnen If counter = 10 Then frame = frame +1 counter = 0 End If ;ja und alles mit frame malen ... DrawImage lol,200,200,frame End Function |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group