Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 17.06.2003, 11:03 Titel: Sprites animieren |
|
|
Wie kann ich 2 Sprites zu unterschiedlichen zeitpunkten animieren? ZB. ich habe einen Sprite, der den Spieler darstellt und einen Sprite, der einen Gegner darstellt. Wie kann ich es nun machen, dass sich der Gegner animiert bewegt, aber der Spieler nicht?? Wenn ich beide animationsvorgänge in eine Funktion schreibe is es logisch dass beide gleichzeitig animiert werden! Aber wie soll ich beide von einander trennen! _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
|
Nach oben |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 17.06.2003, 11:24 Titel: |
|
|
Ich versuche zu erklären: Ich habe die Funktion ! Diese Funktion löscht zuerst den Backbuffer und blittet dann alles neu auf die Oberflächen. (So wie es in dem einem Buch von Christian beschrieben wird). Ich habe mal versucht den Gegner auf eine andere Oberfläche zu blitten, diese dann zu löschen, und dann neu auf die BackBuffer-Oberfläche zu Blitten, aber das geht irgendwie nicht so ganz. Dann habe ich versucht, nur den Teil zu löschen, wo sich der Sprite befindet und ihn dann neu aufgeblittet. Das geht aber auch irgendwie nicht!
=> _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 17.06.2003, 11:28 Titel: |
|
|
Das liegt ja nicht am backbuffer, oder der render funktion sondern daran das du den code für das animieren von dem zeug benutzt.
Welche Klassen/Funktionen von Christian benutzt du um die Sprites zu blitten?
Hast du ICQ? _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 17.06.2003, 11:41 Titel: |
|
|
Ich würde die Animationen sowieso nicht in der Renderfunktion behandeln. Mach doch einfach eine eigene Funktion, die dann in regelmäßigen Abständen aufgerufen wird. In dieser Funktion schreibst du dann halt z.B.:
Code: | if(charakterIsWalking==true)
{
//Animation weitersetzen
} |
_________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 17.06.2003, 12:55 Titel: |
|
|
Ich würd's ihm genauer erklären denn soviel ich über ihn weis hat er nur das 1. Buch, und dort ist das per frames! _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 17.06.2003, 13:22 Titel: |
|
|
Wenn du den Spieler zu einem gewissen Zeitpunkt nicht animieren möchtest, tu es einfach nicht! Setz dir Animationsflags und je nach dem wie sie gesetzt sind behandelst du die aktuelle Animation. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 17.06.2003, 15:44 Titel: |
|
|
Du könntest dich auch ein wenig damit auseinandersetzten und nicht immer copy&paste machen. Ist ja nicht so schwer. Die Methode von Christian mit dem für jeden animationsschritt eines bild machen gefällt mir sowieso nicht. _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 17.06.2003, 15:49 Titel: |
|
|
BlackLordOfDragons hat Folgendes geschrieben: | Ich würd's ihm genauer erklären denn soviel ich über ihn weis hat er nur das 1. Buch, und dort ist das per frames! |
Ich hab auch nur das erste Buch.
BlackLordOfDragons hat Folgendes geschrieben: | Die Methode von Christian mit dem für jeden animationsschritt eines bild machen gefällt mir sowieso nicht. |
Wie soll man es denn sonst machen?
Animationen sind schnelle Abfolgen von Bildern. Das hat übrigens nix mit copy&paste zu tun. Die Methode ist die gleiche, doch man kann sie auch selber(d.h. ohne copy&paste) programmieren. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 17.06.2003, 16:18 Titel: |
|
|
The Lord of Programming hat Folgendes geschrieben: | Ich würde die Animationen sowieso nicht in der Renderfunktion behandeln. |
Ich dachte du meinst die Schritte mit Zeit berechnen.
Ich mach es z.B. so das ich alle animationsschritte in einer Datei habe, was wesentlich praktischer ist und sie dann per RECT mit Draw([...]) nur jeweils der gewünschte Schritt anzeige.
Das mit dem copy & paste ist nicht böse gemeint wenn er sagt er kann die Animation nicht ausstellen dann hat er sich sicher nicht mit dem code beschäftigt, er müsste bei Christians klasse ja nur eine Sprite Klasse mit nur einer Textur erzeugen und schon hätte er ein unbewegliches Objekt. _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 17.06.2003, 20:16 Titel: |
|
|
Ich hab ja auch alle Animationsschritte in einer Datei. Ich hab das ja gemeint, dass er den Animationsschritt erweitern soll und dann in der Renderfunktion die Rects des jeweiligen Schrittes zeichnen soll. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 18.06.2003, 10:51 Titel: |
|
|
das mit der eigenen Funktion für den Sprite habe ich auch schon versucht, aber es tut sich nichts! Muss ich nicht zuerst die Oberfläche löschen und ihn draufblitten dass es geht?? Aber wenn ich das mache wird auch der Sprite der nicht anim. werden soll gelöscht! Und wenn ich den dann wieder draufblitte wird er animiert! _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 18.06.2003, 11:18 Titel: |
|
|
Deine Frage wurde schon beantwortet, du musst es nur richtig umsetzen. Du solltest Bewegung, Animation und Rendering von einander trennen. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 18.06.2003, 13:25 Titel: |
|
|
Du musst nur die primäre Oberfläche bzw. den Hintergrundbuffer leeren. Dann nimmst du ein paar globale(wenn du willst, auch lokale) Variablen:
Code: | int animationsschritt=0;
int xposition=0;
int yposition=0; |
Dann schreibst du eine/zwei Funktion/en für die Bewegung und für die Animation:
Code: | animationsschritt++;
if(animationsschritt>=maxiamaleAnimationsschritte)
{
animationsschritt=0;
}
if(wasweißich)
{
xposition+=irgendeineVariable;
}
if(wasweißichnoch)
{
yposition+=irgendeineVariable;
} |
In der Renderfunktion schreibst du dann
//Blitten
für die X-Koordinaten: xposition
für die Y-Koordinaten: yposition
dann blittest du halt nur das Rect, das in dem Bereich
animationsschritt*framesbreite und
framesbreite liegt. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
|