Animationsdurchlauf
Übersicht

Johann der 2.Betreff: Animationsdurchlauf |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie schaff ich es das ich meinetwegen t drücke und dann eine animation EINMAL durchläuft? | ||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
In dem du eine Abspielvariable auf 1 setzt, sobald t gedrückt wurde und die Animation abspielst, sobald diese Variable 1 ist. Wenn der letzte Frame der Animation erreicht wurde, wird die Abspielvariable einfach wieder auf 0 gesetzt.
Pseudo-code: Wenn TasteT, abspielen=1 und frame=0 Wenn abspielen, Bild zeichnen und frame um 1 erhöhen Wenn frame>letzter Frame, abspielen=0 |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Muss das ganze dann mit If bedinngungen gemacht werden? also:
Code: [AUSKLAPPEN] If Keyhit (157) Then abspielen=1 and frame=0
Und wie heißt dann die nächste zeile etwa: Code: [AUSKLAPPEN] If abspielen then Drawimage variable,x,y and frame+1
DAs stimmt doch so nicht oder? Wie heißt es richtig? Mfg Johann |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If KeyHit(157) Then Abspielen=1: Frame=0
Frame=Frame+Abspielen If Frame>9 Then Abspielen=0: Frame=0 DrawImage Cariable,x,y,Frame oder Code: [AUSKLAPPEN] If KeyHit(157) Then Abspielen=1: Frame=0
If Abspielen=1 Then Frame=Frame+1: If Frame>9 Then Abspielen=0: Frame=0 DrawImage Cariable,x,y,Frame And ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke steht denn das : sozusagen für und? | ||
Tritium |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In diesem Fall gewissermaßen schon, eigentlich wird der Doppelpunkt als Trennung von Befehlen benutzt:
Das hier: Code: [AUSKLAPPEN] Print "1" : Print "2" : Print "3"
macht das Gleiche wie: Code: [AUSKLAPPEN] Print "1"
Print "2" Print "3" Bei If-Verzweigungen kannst Du es benutzen, um mehrere Befehle auszuführen. Das hier: Code: [AUSKLAPPEN] If 1=2 Then Print "Die Bedingung" : Print "ist wahr"
macht das Gleiche wie: Code: [AUSKLAPPEN] If 1=2 Then
Print "Die Bedingung" Print "ist wahr" Endif |
||
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jetzt wird ja da ich nach der If bedinngung drawimage gesetzt hab die animation zumindest der erste frame sofort gesetzt muss ich wenn ich will das die animation erst gestetzt wir wenn ich t drücke das Drawimage mit der if bedinngung verbinden? | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hää? Selbst nach mehrmaligem lesen und setzen von imaginären Kommata konnte ich deine letzte Frage nicht verstehen. Deine erste Frage war, eine Animation einmal durchlaufen lassen, nachdem eine Taste gedrückt wurde. Wenn du nicht willst dass dein DrawImage auch sonst immer rumzeichnet, solltest du das DrawImage mit in die zweite If-Abfrage rein packen. In etwa so:
Code: [AUSKLAPPEN] If Abspielen=1 Then
DrawImage Variable,x,y,Frame Frame=Frame+1 If Frame>9 Then Abspielen=0: Frame=0 End If |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja danke du hast mir richtig geantwortet entschuldigung für meine schlecht gestellte frage. Aber eine habe ich noch das sollte die letzte fürs erste sein(oder auch nicht xD) ich hab jetztdiesen Code: [AUSKLAPPEN] Graphics 640, 480
SetBuffer BackBuffer () S1=LoadImage ("s1.bmp") S2=LoadImage ("s2.bmp") Variable=LoadAnimImage ("schuss1.bmp",640,8,0,59) While Not KeyHit (1) Cls DrawImage s1,x1,y1 DrawImage s2,x2,y2 If KeyDown(208) And y1=<405 Then y1=y1+4 EndIf If KeyDown(200) And y1=>0 Then y1=y1-4 EndIf If KeyDown(80) And y2=<405 Then y2=y2+4 EndIf If KeyDown(72) And y2=>0 Then y2=y2-4 EndIf If KeyHit(157) Then Abspielen=1: Frame=0 If Abspielen=1 Then DrawImage Variable,x1,y1,Frame Frame=Frame+1 If Frame>58 Then Abspielen=0: Frame=0 End If Flip Wend Wie kann ich es nun machen das wenn ich die animation ausführen lasse also sie gerade läuft das sie nicht verschoben werden kann ,weil bis jetzt habe ich es so gemacht die animation von x1 und y1 starten lassen. Nur x1 und y1 kann ich durch meine if bedingung oben verschieben. Wie kann ich es anders machen so das die animation vom letzten standpunkt des bildes s1 aus gestartet wird aber nicht mehr verschoben werden kann ich hoffe die farge war deutlich genug um auf sie antworten zu können. Mfg Johann |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
if abspielen = 0
tastenabfragen Endif meinst du sowas ? Jetz kann der Gamer sich während der Animation nicht mehr Bewegen. Viele Grüße TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein der gamer soll sich noch bewegen können ich sag euch mal den sach verhalt auf 2 seiten links und rechts sind sozusagen panzer die von oben nach unten fahren können die können schießen nur wenn man t drückt soll der schuss losgehen also die animation. Der schuss soll aber nicht verückt werden können nur der spieler soll sich noch bewegen können. | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann benötigt jeder Schuß seine eigene Koordinaten-Variablen. Und das geht am besten mit Types. Siehe dazu Type![]() Edit1: Hier hast du mal ein sehr einfaches Typebeispiel: Code: [AUSKLAPPEN] Graphics 400,400,0,2
SetBuffer BackBuffer() Local Timer=CreateTimer(50) Type TFlare Field XP# Field YP# Field XG# Field YG# Field AT% Field FA% End Type Local XP#=0 Local YP#=0 Local XG#=0 Local YG#=0 Local TF.TFlare While Not KeyHit(1) XP=MouseX() YP=MouseY() XG=MouseXSpeed() YG=MouseYSpeed() XG=XG/10 YG=YG/10 If MouseDown(1) Then ;Neuen Partikel erstellen TF.TFlare=New TFlare ;Zufälligen Farbwert zuweisen TF\FA=Rand(0,255) ;Position aus Mausposition TF\XP=XP TF\YP=YP ;Geschwindigkeit aus MausSpeed TF\XG=XG+Rnd(-.1,.1) TF\YG=YG+Rnd(-.1,.1) End If ;Alle Partikel bewegen For TF.TFlare=Each TFlare ;Geschwindigkeit zur Position zurechnen TF\XP=TF\XP+TF\XG TF\YP=TF\YP+TF\YG ;Bildschirmeingrenzung beibehalten If TF\XP>400 Or TF\XP<0 Then TF\XG=-TF\XG If TF\YP>400 Or TF\YP<0 Then TF\YG=-TF\YG ;Altern vom Partikel um eins TF\AT=TF\AT+1 ;Farbe und Position vom Partikel zeichnen Color 255,TF\FA,255-TF\FA Rect TF\XP-2,TF\YP-2,5,5,1 ;Wenn Partikel älter als 500 dann diesen löschen If TF\AT>500 Then Delete TF Next WaitTimer(Timer) Flip 0 Cls Wend End Einfach mal mit der Maus rumklicken. |
||
- Zuletzt bearbeitet von hectic am Di, Dez 02, 2008 18:12, insgesamt 2-mal bearbeitet
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann mach den Schuss nicht in die Animation rein.
Für Schüsse, siehe Types in der Onlinehilfe. Ich denke jedoch kaum dass du mit Types umgehen lernen wirst, anhand der Eigeninitiative und des Denkens das du bis jetzt gezeigt hast. MfG |
||
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
The_Nici das soll jetzt keine beleidigung sein aber von dir höre ich so gut wie nur sowas wirklich weitergeholfen hast du mir noch nie wirklich aber egal und ich werde mir das mal angucken.
Mfg Johann Edit: Hectic sieht interessant aus das guck ich mir auch mal an. |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das sollte keine Beleidigung sein, ich habe wohl dein Können unterschätzt, ich interpretierte deine x Threads zum abspielen einer Animation in 2D als Lernunfähigkeit.
MfG |
||
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe es auch nicht als beileidigend aufgefasst. Ich fand deine x Antworten nur als sinnlos. Da du statt mir zu helfen mich nur kritiesiert hast und wenn du meinst dann bin ich lernunfähig mein was u möchtestwürde ich x Threads aufmachen wenn ich es nicht wirklich lernen wollte?
Edit: Dann bräuchte ich bei meinem code doch nur 2 Fields oder? bin mir da nicht sicher kann man eigentlich eine variable unter eine variable setzten also x1=x? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group