Schlag animation?
Übersicht

black_threatBetreff: Schlag animation? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also brauche hilfe bei einer schlag ani.
Wie mach ich sowas das es die 4 bilder die ich hab nur einmal ausführt wenn man die entsprechende tast drückt? In renés buch konnte ich sowas nicht wirklich finden ![]() Ich hoffe es kann mir da jemand helfen black_threat |
||
![]() |
Michi1988 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Millisecs ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit einer zusätzlichen Variable. Wird die Taste gedrückt ist sie True. Solange sie True ist und die Ani nicht den max. Frame erreicht hat, wrid hochgezählt. Dann prüfst Du ob die Taste nicht gedrückt ist und in diesem Fall auf False setzen und Ani auf Startwert bringen oder was auch immer. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
black_threat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] If KeyDown(57) And frmschlag <> 2 Then ani=1
If ani=1 Then If MilliSecs() > tmrschlag + 500 Then tmrschlag=MilliSecs() frmschlag=(frmSparks + 1) Mod 2 DrawImage schlag,100,100,frmschlag EndIf EndIf If Not KeyDown(57) Then ani= 0 : frmschlag = 0 warum funzt das nicht hab alles so gemacht wie du gesagt hast oder? |
||
![]() |
Seoman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du übernimmst dich... | ||
black_threat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Seoman hat Folgendes geschrieben: Du übernimmst dich...
kannst du mir nich sagen wie es funktioniert, bitte |
||
- Zuletzt bearbeitet von black_threat am Mi, Jul 14, 2004 21:26, insgesamt einmal bearbeitet
black_threat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sorry, wegen doppelpost, hab mich verclickt ![]() |
||
![]() |
Seoman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für was für einen Spieltyp brauchst du den Schlag? Bei einem Beat'm up musst du z.B. noch testen, ob andere Tasten gedrückt sind, in welche Richtung du blickst...
Hier ist erst mal der Grundsatz: Ich würde es folgendermaßen machen: Davon ausgehend, dass du mit Functions arbeitest: In die Bewegungsabfrage des Spielers einen If-Block: Code: [AUSKLAPPEN] If KeyHit (11) Then ; Wenn 0-Taste gedrückt ist schlagen() EndIf Dann eine neue Function Code: [AUSKLAPPEN] Function Schlagen() For frame=1 to 4 DrawImage Schlag, x, y, frame Delay30 ; Sonst wäre die Animation zu schnell, pass das deinen Bedürfnissen an. Kanst natürlich auch Wait oder ähnliches machen Next End Function So musst du die Taste zwar immer dann neu drücken, wenn du wieder Schlagen willst, aber das hat ja auch Vorteile, weil man sonst ja einfach nur durchgehend drücken müsste und er würde immer weiter schlagen. Das ist ein ganz simpler Grundsatz. Ich hoffe er funktioniert. Sag mir Bescheid, wenns nicht geht. mfg Seoman PS: An was arbeitest du und wie lange programmierst du schon? |
||
black_threat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke, funktioniert, nur wie kann ich machen das die animation statt dem charakter angezeigt wird?
ps: hab mir vor 3 tagen ein buch (Programmieren leicht gemacht mit Blitz Basic von Rene Meyer) gekauft, und hab eigentlich erst jetzt richtig zu programmieren angefangen. Vorher hatte ich nur codeschnipsel von tuts zusammengesetz und son zeug... |
||
![]() |
Seoman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuch dich erst mal an etwas leichterem...
Naja, gut dass es funktioniert. Wenn es der Spieler ist, der Schlägt, jenachdem ob man ne Taste drückt, würde ich es folgendermaßen machen: Erstelle eine Animierte Spielergrafik. Sagen wir Mal Bild 1- 4 Läuft nach rechts 5-8 Läuft nach links 9-12 Läuft zu dir 13-16 Läuft von dir weg (Rollenspiel) 17-20 Schlaganimation In der Bewegungsabfrage von Spieler sieht das dann folgendermaßen aus: Code: [AUSKLAPPEN] If KeyDown (rechtstaste) and Kollisionsabfrage Then x=x+1 For frame= 1 to 4 DrawImage Player , x, y, frame Next Endif If KeyDown (linkstaste) and Kollisionsabfrage Then x=x-1 For frame= 5 to 8 DrawImage Player , x, y, frame Next Endif If KeyDown (ZuDirTaste) and Kollisionsabfrage Then y=y+1 For frame= 9 to 12 DrawImage Player , x, y, frame Next Endif If KeyDown (VonDirWegTaste) and Kollisionsabfrage Then y=y-1 For frame= 13 to 16 DrawImage Player , x, y, frame Next Endif If KeyHit (Schlagtaste) Then For frame= 17 to 20 DrawImage Player , x, y, frame Next Endif Mach überall noch deine Sachen rein (Functions, Wait, Delay, was eben so ansteht) und dann sollte es funktionieren. Wenn du für den Spieler keine Animation hast, dann lass einfach immer die For Next Schleife raus und schreib einfach DrawImage player, x, y, 1 Und nur bei der Schlag-Animation die For-Next-Schleife. Dementsprechend hätte deine Animation nur noch 5 Stufen: 1 Normal 2-5 Schlagend Vielleicht hast du auch die Bewegung ganz anders geregelt, du musst einfach ein wenig rumbasteln und diesen Grundsatz deinen Bedürfnissen anpassen. Wieder gilt, wenns nicht geht, nachfragen! mfg Seoman EDIT: Achtung!!!!!!!!!!!!!!!! Momentan kann man schräg laufen (weil der Charakter in einer Abfrage sowohl nach links als auch nach oben bewegt werden kann) Dann sieht die Animation etwas seltsam aus, versuch das also irgendwie zu umgehen, wenn du eine animierte Spielergrafik hast. Bei nur einem Normal-Bild macht das nichts! |
||
![]() |
joachim_neu |
![]() Antworten mit Zitat ![]() |
---|---|---|
kann das sein, dass du dich übernimmst, seoman? das ist nähmlich eine sehr unpraktische variante, wie ich bei meinem eigenen projekt feststellen musste, denn du musst davon ausgehen, dass das game nicht nur von einer schlaganim, sondern auch mit einem hintergrund lebt, so dass du dann bei jeder anim-function auch nochmal alle möglichen sachen malen musst, die in der hauptschleife vorkommen, wie gegner, hintergründe, tiles, objekte usw... also ich würde und werde es nichtmehr so machen!
mfg JOACHIM NEU |
||
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Seoman hat Folgendes geschrieben: Versuch dich erst mal an etwas leichterem...
Code: [AUSKLAPPEN] If KeyDown (rechtstaste) and Kollisionsabfrage Then x=x+1 For frame= 1 to 4 DrawImage Player , x, y, frame Next Endif usw... ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Seoman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mich nicht wirklich drum bemüht. Die Aufteilung und alles ist seine Sache. Ich meine ja nur den Grundsatz, nämlich nicht ein Spielerbild und ein Schlagbild zu nehmen, sondern beides in einem. Ich kenn weder den Rest seines Spiels, noch den Spieltyp, und ich glaube, dass er schon den Grundsatz versteht. Das reicht doch, oder? Damit kann er weitermachen.
Dieser Code dient nicht dazu, ihm die perfekte Lösung zu liefern, denn sonst lernt er nichts daraus. Und mal ganz ehrlich, Joachim_neu, wenn du eine bessere Lösung weißt, dann poste sie doch einfach und zieh nicht über meine her! |
||
![]() |
Seoman |
![]() Antworten mit Zitat ![]() |
---|---|---|
joachim_neu hat Folgendes geschrieben: ... du musst davon ausgehen, dass das game nicht nur von einer schlaganim, sondern auch mit einem hintergrund lebt, so dass du dann bei jeder anim-function auch nochmal alle möglichen sachen malen musst, die in der hauptschleife vorkommen, wie gegner, hintergründe, tiles, objekte usw...
Dazu kann ich nur folgendes sagen: Hast du dir den Rest meines Beitrages auch angeguckt? DAS IST IN DER BEWEGUNGSABFRAGE DES SPIELERS!!!!!!!!!!!!!!!!!!!!!!! Wie er die Gegner aufs Papier bringt, steht in einer ganz anderen Function. Er kann natürlich auch das Ducken in eine neue Funktion bringen und sie am Ende der Spielerbewegung oder der Hauptschleife abfragen. Das Schöne an diesem Script ist doch, dass ihm noch alle Möglichkeiten offen stehen und ich ihm nichts vorschreibe, denn genau das will ich nicht tun: Ihm einen Teil seines Spiels Programmieren! Ich zeige ihm bloß, wie man diesen Teil programmieren KANN! |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nichts desto trotz ist es so dass deine Schleifenkonstruktion äusserst ungünstig ist, Seoman. Ich erklär dir gern wieso:
So wie du es machst (for frame= 1to x ... draw... next) malst Du in einer (!) Schleife sämtliche Animationsschritte für die Boxerei/Bewegung/Wasauchimmer. Ich denke mal der moderne Rechner braucht für diese Schleife nur Bruchteile einer Millisekunde. Optischer Effekt: Du siehst einen Kuddelmuddel aus BewegungsSchritten mit dem Letzten als obersten. Richtig wäre es, bei jedem Durchlauf der Hauptschleife einen Timer zu prüfen und nur bei entsprechenden Grenzwerten ein neues Frame einzuleiten. Also: Code: [AUSKLAPPEN] if Keydown(...) then schlag=1
if schlag = 1 and schlag_timer < millisecs() then schlag_timer=Millisecs()+200 ;alle .2Sek. ein neues Frame drawimage bild,x,y,frame frame=frame+1 if frame > max_frame then frame=0 schlag=0 endif endif |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Seoman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok! Hast recht!
@Hubsi Ich meine ja nur, dass Black_Threat sich entweder zu wenig anstrengt oder er noch etwas Übung braucht, ehe der Spieler den Gegner angreifen sollte. Meine Lösung war ungünstig, geb ich zu, aber trotzdem hat es erstmal funktioniert. Ich hätte es noch umschreiben müsse. Mir hätte Black_Threats Frage viel besser gefallen, wenn sie so ausgesehen hätte. Ich habe ein Problem mit einer Schlag-Animation. Ich habe eine IF-Abfrage gemacht und dann eine For_Next -Schleife, aber jetzt bewegen sich die Gegner in der Zeit nicht... Denn eine solche Frage wäre berechtigt (Ich kannte den Befehl Millisecs() noch nicht, habe ihn jetzt aber nachgeschlagen). Ich finde es einfach ein wenig schade, dass man sich ein Spiel schon fast komplett von der Community Scripten lassen kann. |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das war auch gar keine Kritik oder irgendwie böse gemeint. Mir ist nur das gleich ins Auge gestochen ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group