2010-02-06 7 views
2

Je travaille sur XNA C# quand je suis tombé sur ce problème où j'ai besoin de stocker des données d'animation facilement modifiables pour que mon jeu puisse le restituer et le jouer.Stockage du vecteur XNA Animations

Il est quelque chose comme ceci:

J'ai une texture voler à travers l'écran de (0,0) à (800,600) pixels. Cela durera 5s.

Comment puis-je représenter dans les données et écrire aussi telles que le jeu est en mesure d'interpréter et faire le nécessaire dans les méthodes Draw et Update. C'est OK si j'ai besoin de codage intensif.

+0

Si vous stockez les animations au format XML, vous pouvez les charger via le pipeline de contenu – Martin

+0

, vous ne pouvez pas vraiment définir une grande partie des différentes animations et transitions dans le fichier XML? – mauris

+0

@Martin: Toutes les animations scriptées doivent passer par le pipeline de contenu, qu'elles soient exécutées en XML ou non, si le projet doit fonctionner sur des plates-formes autres que des PC ordinaires. L'utilisation de XML pour la structure d'une animation DSL ne présente aucun avantage par rapport à une structure en texte brut. –

Répondre

1

Un langage spécifique au domaine pourrait aider; créer une classe AnimationDirector qui interpréterait les instructions du script d'animation et effectuerait le travail approprié pendant Draw et Update. Le DSL lui-même pourrait être aussi simple que

texture 0,0; 800,600; 5.0 

qui va créer un objet avec une texture texture à (0,0) et le déplacer vers (800600) sur une période de cinq secondes, puis le détruire.

Si vous voulez quelque chose d'un peu plus utile,

create x texture 0,0 
over 5.0 move x 800,600 
destroy x 

qui vous permettra plus de créativité, et d'élargir les possibilités d'animation (comme l'ajout d'une rotation, etc. si vous le désirez, tels). Maintenant, lorsque vous avez besoin d'exécuter une animation, passez simplement le nom de ressource approprié au directeur, et laissez-le gérer les choses à partir de là. Alternativement, vous pouvez créer une sorte d'AnimatedEntity qui fait référence à un script particulier, et appelle le AnimationDirector lui-même pour Draw et Update; en fonction de la façon dont vous avez fait votre moteur jusqu'à présent, cela pourrait être plus adapté à sa conception.

0

Voici un petit truc ...

La position de la texture peut être définie par une formule mathématique, qui vous donnera (0,0) à l'heure de début et (800,600) cinq secondes plus tard.

+0

Je sais comment le définir dans une formule mathématique. cependant, les données stockées devraient être facilement modifiables (c'est-à-dire facilement lisibles par l'humain sans trop réfléchir) et il y a aussi plusieurs animations qui se déroulent ensemble – mauris