2d Sprite Animationen ohne Verwendung von XNA oder anderen Bibliotheken von Drittanbietern

7

Ich möchte ein einfaches Spiel erstellen, ähnlich dem, was mit RPG Maker erstellt werden kann. Was ich im Moment hauptsächlich suche, ist ein Tutorial, das mir zeigen kann, wie ich es ohne XNA oder eine andere spezifische Bibliothek erreichen kann.

Das Ideal wäre eine Schritt-für-Schritt-Anleitung oder ein gutes, leicht zu verstehendes Beispiel.

Mein Ziel ist es, es alleine zu machen und zu verstehen, wie der gesamte Prozess in Bezug auf die aufeinander bezogenen Animationselemente funktioniert.

Ich habe in der Vergangenheit bereits ein einfaches Snake-Spiel mit einem einfachen Tutorial erstellt, aber es gab keine Bewegungsanimation und das ist das Wichtigste, was ich als nächstes lernen möchte.

Bearbeiten:

Alle Tutorials, die ich bisher gefunden habe, verwenden Bibliotheken von Drittanbietern. Ich bin auf diesen Link gestoßen , aber ich suche nach etwas, das nicht funktioniert. t schließe XNA ein.

    
WiiMaxx 19.04.2013, 19:58
quelle

3 Antworten

15

Es gibt mehrere Möglichkeiten, sich dem von Ihnen beschriebenen Thema zu nähern. Ich werde Ihnen einen kleinen Überblick geben und Ihnen dann hoffentlich einige Ressourcen zur Verfügung stellen, die Ihnen Beispiele geben können, die Ihnen den Einstieg erleichtern.

Im Wesentlichen basieren Animationen auf Sprite-Basis auf einer Reihe ähnlicher Bilder, die, wenn sie nacheinander angezeigt werden, ähnlich wie ein Daumenkino den Eindruck von Bewegung erzeugen.

Der Trick besteht darin zu verstehen, wann sich dein Sprite bewegt (und daher animiert werden sollte) - und wann es still steht (und daher nicht animiert werden sollte). Mit anderen Worten - angenommen, dass der -Charakter Ihres Spiels nur verschoben werden soll, wenn Sie , , gedrückt halten oder , Sie müssen erkennen, wenn eine dieser Tasten gedrückt wird und nicht mehr gedrückt wird, so dass Sie Ihre Animation entsprechend starten / stoppen können.

Stellen Sie sich vor, dass Sie der Einfachheit halber nur zwei Sprites haben. Der erste (links unten) steht für den stehenden Charakter und der zweite steht für den Charakter in der Mitte (rechts, unten):

Wenn die Taste nicht gedrückt wird, wird einfach das erste Bild angezeigt. Wenn die -Schaltfläche gedrückt ist, können Sie zwischen den beiden% x Millisekunden wechseln (abhängig davon, wie schnell die Animation angezeigt werden soll).

Ein animiertes .gif ist ein Format, in dem Sie eine Reihe einfacher Bilder enthalten können als Serie angezeigt werden (und somit die Illusion der Animation erzeugen). Wenn Sie Ihre Sprites in diesem Format erstellen würden, könnten Sie Code verwenden, der dem in angegebenen SO ähnlich ist Diskussion , die einen Beispielcode für die Verwendung von C # zum Animieren eines animierten GIFs und zum Steuern des Start / Stopps enthält.

Wenn Sie eine Sprite-Datei (wie oben beschrieben) verwenden möchten, könnten Sie auch etwas ähnliches wie dieser CodeProject-Code , der sich auf die GDI-Interaktion mit der Windows-Umgebung konzentriert, um einen Teil des Sprites auf einen Ziel-Canvas zu extrahieren und zu zeichnen. Indem Sie alle x Millisekunden (wie oben erwähnt) neu streichen, kann dies den gleichen Effekt erzielen.

Ein paar Dinge zu beachten:

Sie müssen mit Transparenz in Ihren Sprites umgehen (das Mario-Sprite oben, zum Beispiel, hat einen transparenten Hintergrund) - damit der Hintergrund Ihrer Spielumgebung durchscheinen kann. Bei der Verwendung von GDI - das alles hat damit zu tun, wie Sie die Malmethoden nennen. Wenn Sie ein animiertes GIF verwenden, hängt die Methode davon ab, wie Sie es in Ihrem Fenster anzeigen.

Weitere Ressourcen / Beispiele / Referenzen finden Sie in den folgenden Ressourcen:

Und für die Sprite-Entwicklung:

Troy Alford 23.04.2013, 22:22
quelle
4

Ich habe als Beispiel zusammengeschustert, was ich denke, dass Sie danach waren. Dieses Beispiel kann auf Schaltflächen oder Bildfelder angewendet werden. Ich wählte diesen Weg der Einfachheit.

Jede Instanz einer Animation enthält einen Timer und eine Liste von Bildern. Aktualisieren des Abbilds des Zielsteuerelements, wenn der Zeitgeber sein Ereignis auslöst.

Ich habe meine Projektdatei hier hochgeladen. Ссылка

Hoffentlich ist es genug zu helfen. Frag einfach, ob du mehr Erklärungen brauchst.

Die Klasse

%Vor%

Das war in meiner Form geladen. Kann wirklich überall hingehen, wo das Zeug initialisiert wird.

%Vor%     
Andy 24.04.2013 03:01
quelle
1

Auf der Schnellsuche fand ich dieses Beispiel . Ich bin nicht sehr erfahren in c # Grafiken, aber hier sind einige Punkte, die ich gelernt habe, mit nicht-Grafik-orientierten Sprachen zu arbeiten:

  • Erklären Sie, wo / was Sie zeichnen möchten
  • Erstellen Sie eine Schleife, die bis zum Abbruch / Ereignis ausgeführt wird, um die Schleife zu beenden (wie ein Objekt, das mit etwas kollidiert)
  • In der Schleife: warte, lösche den alten Zeichenbereich, berechne neue Position neu, zeichne eine neue Position
  • Bei Bedarf können Sie das zu zeichnende Bild auch ändern, aber dann benötigen Sie separate Bilder für jeden "Rahmen", den Sie haben möchten
  • Multithreading ist eine gute Idee, damit Sie die Grafik von anderer Spiellogik trennen können
  • versuchen Sie, die Zeit so zu hal- ten, dass der Zeichnungsbereich nicht gelöscht wird und zeichnen Sie ihn so kurz wie möglich, um ein Flackern zu vermeiden
  • Verfolgen Sie die Größe der Objekte, die Sie zeichnen, um die Kollisionsprüfung zu vereinfachen (z. B. Mittelpunkt des Sprites + Radius). Dann können Sie leicht einen Kreis um ihn herum berechnen, um zu prüfen, ob zwei Sprites zu nahe beieinander liegen )
Sopuli 23.04.2013 07:33
quelle

Tags und Links