JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=88932d4993608370993c860a93747a44Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Sprites animieren

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound
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

BeitragVerfasst am: 17.06.2003, 11:03    Titel: Sprites animieren Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 11:19    Titel: Antworten mit Zitat

Poste mal ein wenig code!
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mäscht
JLI'ler



Anmeldedatum: 22.05.2003
Beiträge: 150
Wohnort: Bad Hofgastein\Österreich
Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 11:24    Titel: Antworten mit Zitat

Ich versuche zu erklären: Ich habe die Funktion
Code:
void Render(void)
! 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!
=> Question
_________________
Motz´z mi net o, i bin ofänga!! AEIOU für immer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 11:28    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 11:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 12:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 13:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 15:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 15:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 16:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 17.06.2003, 20:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mäscht
JLI'ler



Anmeldedatum: 22.05.2003
Beiträge: 150
Wohnort: Bad Hofgastein\Österreich
Medaillen: Keine

BeitragVerfasst am: 18.06.2003, 10:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 18.06.2003, 11:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 18.06.2003, 13:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum