2016-11-19 1 views
0

Pourquoi mon sprite dessine-t-il dans le coin supérieur gauche quand ma variable wizardPos le place clairement au milieu de l'écran?Dessiner Spritebatch dans la mauvaise position

//in load content 
wizardPos = new Vector2(graphics.PreferredBackBufferWidth /2, 700); 
wizardChar = new Characters.Wizard(this, spriteBatch, wizardPos, wizardWalk1); 


//in Draw method 

this.spriteBatch.Draw(tempWizard, wizardPos, null, Color.White, 0f, wizardPos, 1f, SpriteEffects.None, 0f); 

Wizard should be drawing in red rectangle

Répondre

1

Essayez ceci:

this.spriteBatch.Draw(tempWizard, wizardPos, null, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f); 

Le position de l'image-objet est en fait la position du origin de l'image-objet. Ainsi, lorsque vous définissez le origin sur wizardPos, le origin est défini par rapport à l'image-objet et non à l'écran. Par conséquent, la définition des valeurs origin et position à la même valeur s'annule mutuellement.

Le origin sera généralement quelque part dans les limites de l'image-objet car il est utilisé pour le calcul des choses comme la rotation, ainsi

+0

Merci Beno! Travaillé parfaitement. Je n'ai pas compris comment l'origine a fonctionné exactement. Appréciez-le. –