Voir la version complète : Transformations des Sprites ne font rien...
CPPTryer
13/11/2005, 21h44
Salut tout le monde,
Je me suis mis il y a quelques jours à essayer C#/DirectX.
Pour me faire la main avec Direct3D j'ai donc suivit des tutos... et je compte faire un tit jeux 2d. Alors la 1ere question^^ mieu vaut utiliser les sprites de Direct3D ou faire une classe sprite soit-même fait de vertex pour un rendu en 2d ? J'ai essayer de voir avec les sprites car ça a l'air simple, mais je comprend pas, j'ai beau faire des translations avec le sprite genre MonSprite.Transform = Matrix.....
Mais heu ça fait rien:s Yé né comprend pas alors si vous pouviez m'aider^^
Car c'est assez ennuyeux^^
Merci d'avance @+++
je viens de passé des heure de probleme sur ma class DE_Sprite moi aussi mais maintenant elle fonctionne terrible :)
Scale
Rotation
Position
Je te propose de faire comme moi, une class qui utilise LPD3DXSPRITE .
[EDIT]
Pour les transformation faut utilise D3DXMATRIX et faire Sprite->SetTransformation(
CPPTryer
13/11/2005, 22h41
Salut, ouai j'ai essayer avec l'équivalent C# mais jcapte pas, quand je fais une transformation, et ba ça ne donne rien:00000021:
grob1212
14/11/2005, 08h57
Salut, ouai j'ai essayer avec l'équivalent C# mais jcapte pas, quand je fais une transformation, et ba ça ne donne rien:00000021:
Si tu nous donnais au moins un extrait de ton code source, ca pourrait nous faciliter la tache pour t'aider...
CPPTryer
14/11/2005, 20h59
Salut!
Oui dsl...
Et bien je fais ça dans ma méthode render :
mySprite.Begin(SpriteFlags.AlphaBlend);
mySprite.Transform = Matrix.RotationX(0.5f);
mySprite.Draw(myTexture, Rectangle.Empty, new Vector3(0f, 0f, 0f), new Vector3(0, 0, 0), Color.White);
mySprite.End();
Et normalement ba il devrait y avoir quelque chose... mais il s'affiche plus lorsque j'ajoute la transformation. Ais-je oublier quelque chose ?
Merci d'avance @+++
Lenolian
14/11/2005, 23h01
Examines tes paramêtres :
mySprite.Draw(myTexture, Rectangle.Empty, new Vector3(0f, 0f, 0f), new Vector3(0, 0, 0), Color.White);
myTexture : reference à la texture à utiliser, pas de problème.
Rectangle.Empty : tu dessines toute la texture.
new Vector3(0.0f,0.0f,0.0f) : Le centre de rotation est le coin haut gauche de la texture.
new Vector3(0.0f,0.0f,0.0f) : La texture est dessiné dans le coin haut gauche de l'écran.
Color.White : module la couleur de ta texture.
Donc, si on reprend tu dessines ton sprite en haut à gauche de l'écran, tu lui fait faire une rotation en prenant comme centre le coin haut gauche aussi. Il ya de grande chance pour que ta rotation fasse sortir le sprite de l'écran et donc il n'est plus dessiné. Essayes en changeant le centre de rotation (centre de la texture par exemple).
NB : D'ailleurs une rotation autour de l'axe des X fait que ton sprite n'est plus perpendiculaire à l'écran, c'est peut-être pour cela que tu ne le vois pas. Enfin je dis ça, j'ai regardé juste comme çà et j'ai pas toute ma tête en ce moment. J'espère que cela t'aidera quand même.
CPPTryer
19/11/2005, 18h18
Salut, ouai, en fait je me suis gourré d'axe, il faut le faire tourner sur l'axe Z...
@+++
vBulletin® v.3.6.5, Copyright ©2000-2009, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org