JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

zu hohe Geschwindigkeit bei Spriteanimation

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Maddin
Mini JLI'ler



Anmeldedatum: 03.11.2003
Beiträge: 37

Medaillen: Keine

BeitragVerfasst am: 13.06.2004, 21:55    Titel: zu hohe Geschwindigkeit bei Spriteanimation Antworten mit Zitat

Hi,
ich habs jetzt hinbekommen in C# und DIrectX 9 ein Sprite zu animieren. Ich verschiebe jetzt einfach den angezeigten Teil der angezeigten Grafik(Teilgrafik). Dies geschieht jetzt allerdings so schnell wie er es eben schaft und man kann so kine Animation erkennen. Wie ändert man sowas? Was muss ich tun?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 13.06.2004, 22:17    Titel: Antworten mit Zitat

Am besten du hast eine Art Animationszähler.
Nach einer bestimmten Zeit, wird dieser erhöht und somit ein neues Sprite benutzt.

Mit TimeGetTime ermittelst du die aktuelle Zeit und speicherst sie in einer Variable(z.B DWORD AnimationTime).

Beim nächten Spielschleifendurchlauf machst du
Code:
if((TimeGettime - AnimationTime) > 299)
{
     // Animationszähler erhöhen
     // AnimationTime aktualisieren
}


Das bewirkt, dass nach mindestens 300 Millisekunden die Bedingung zutrifft und somit der Animationszähler erhöht wird....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 14.06.2004, 20:36    Titel: Antworten mit Zitat

TimeGetTime ist eine C++-Funktion, er sagte aber was von C#.
Der Mechanismus sollte Klar sein, aber den aktuellen Zeitwert erhält man eher über System.Timer.Now.GetTickCount()...
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dietmar Ferstl
Mini JLI'ler



Anmeldedatum: 19.07.2002
Beiträge: 47
Wohnort: Regensburg/Bayern
Medaillen: Keine

BeitragVerfasst am: 15.06.2004, 14:09    Titel: Antworten mit Zitat

AFE-GmdG hat Folgendes geschrieben:
TimeGetTime ist eine C++-Funktion, er sagte aber was von C#...


C, C# hin oder her.
Man kann sich doch leicht eine eigene Funktion schreiben, die mit dem Performancecounter arbeitet.
Ausserdem wie wärs mit einer simplen For-Zeitschleife.
Die stimmt man einfach auf seinen Rechner ab und fertig.
Auf die Schnelle und für den Hausgebrauch kann man das doch versuchsweise einfach implementieren.

D.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 15.06.2004, 14:46    Titel: Antworten mit Zitat

Dietmar Ferstl hat Folgendes geschrieben:
AFE-GmdG hat Folgendes geschrieben:
TimeGetTime ist eine C++-Funktion, er sagte aber was von C#...


C, C# hin oder her.
Man kann sich doch leicht eine eigene Funktion schreiben, die mit dem Performancecounter arbeitet.
Ausserdem wie wärs mit einer simplen For-Zeitschleife.
Die stimmt man einfach auf seinen Rechner ab und fertig.
Auf die Schnelle und für den Hausgebrauch kann man das doch versuchsweise einfach implementieren.

D.


Was bringt es einen wenn man die for Schleife auf seinen eigenen Rechner abstimmt ? Da haut ja die Zeit schon bei jeden zusätzlichen Rechenschritt ausserhalb des Mainthreads nicht mehr hin. Bei anderen Rechnern auch.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dietmar Ferstl
Mini JLI'ler



Anmeldedatum: 19.07.2002
Beiträge: 47
Wohnort: Regensburg/Bayern
Medaillen: Keine

BeitragVerfasst am: 15.06.2004, 16:01    Titel: Antworten mit Zitat

FallenAngel84 hat Folgendes geschrieben:
Dietmar Ferstl hat Folgendes geschrieben:
AFE-GmdG hat Folgendes geschrieben:
TimeGetTime ist eine C++-Funktion, er sagte aber was von C#...


C, C# hin oder her.
Man kann sich doch leicht eine eigene Funktion schreiben, die mit dem Performancecounter arbeitet.
Ausserdem wie wärs mit einer simplen For-Zeitschleife.
Die stimmt man einfach auf seinen Rechner ab und fertig.
Auf die Schnelle und für den Hausgebrauch kann man das doch versuchsweise einfach implementieren.

D.


Was bringt es einen wenn man die for Schleife auf seinen eigenen Rechner abstimmt ? Da haut ja die Zeit schon bei jeden zusätzlichen Rechenschritt ausserhalb des Mainthreads nicht mehr hin. Bei anderen Rechnern auch.

Was du nicht sagst. Very Happy
Dass das nicht viel taugt, habe ich ja durch "Hausgebrauch" und "Auf die Schnelle" schon erwähnt.
Wenn er aber mit Timern nichts am Hut hat, kann er doch diese For-Zeitschliefe einfach mal schnell einbauen, tut ihm doch nicht weh;)

D.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 15.06.2004, 16:08    Titel: Antworten mit Zitat

doch tut es wohl!
Man sollte immer versuchen so korrekt wie möglich zu programmieren. Sonst gewöhnt man sich noch später dran. Und dann ärgert man sich. Ist sauschwer sowas wieder raus zu bekommen.
Ist wie mit dem Zähneputzen: "Kind putz dir deine Zähne, das tut dir heut noch nciht weh, aber in 20 Jahren ärgerst du dich das du Zahstein hast und den wirst du nicht mehr los!"
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung 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