Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Maddin Mini JLI'ler
Anmeldedatum: 03.11.2003 Beiträge: 37
Medaillen: Keine
|
Verfasst am: 13.06.2004, 21:55 Titel: zu hohe Geschwindigkeit bei Spriteanimation |
|
|
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 |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 13.06.2004, 22:17 Titel: |
|
|
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 |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 14.06.2004, 20:36 Titel: |
|
|
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 |
|
 |
Dietmar Ferstl Mini JLI'ler
Anmeldedatum: 19.07.2002 Beiträge: 47 Wohnort: Regensburg/Bayern Medaillen: Keine
|
Verfasst am: 15.06.2004, 14:09 Titel: |
|
|
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 |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 15.06.2004, 14:46 Titel: |
|
|
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 |
|
 |
Dietmar Ferstl Mini JLI'ler
Anmeldedatum: 19.07.2002 Beiträge: 47 Wohnort: Regensburg/Bayern Medaillen: Keine
|
Verfasst am: 15.06.2004, 16:01 Titel: |
|
|
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.
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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 15.06.2004, 16:08 Titel: |
|
|
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 |
|
 |
|