Animationsdurchlauf

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Johann der 2.

Betreff: Animationsdurchlauf

BeitragFr, Nov 28, 2008 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie schaff ich es das ich meinetwegen t drücke und dann eine animation EINMAL durchläuft?

Holzchopf

Meisterpacker

BeitragFr, Nov 28, 2008 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
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 BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

Johann der 2.

BeitragDi, Dez 02, 2008 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Dez 02, 2008 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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 ist eine logische Binärverbinung und kein ''und'' wie du es angewendet hast.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Johann der 2.

BeitragDi, Dez 02, 2008 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke steht denn das : sozusagen für und?
 

Tritium

BeitragDi, Dez 02, 2008 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

BeitragDi, Dez 02, 2008 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
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?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Dez 02, 2008 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

BeitragDi, Dez 02, 2008 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 02, 2008 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

BeitragDi, Dez 02, 2008 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Dez 02, 2008 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann benötigt jeder Schuß seine eigene Koordinaten-Variablen. Und das geht am besten mit Types. Siehe dazu Type. Alles andere wäre ein reines rumgebastel.

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

BeitragDi, Dez 02, 2008 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

BeitragDi, Dez 02, 2008 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 02, 2008 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

BeitragDi, Dez 02, 2008 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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?

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group