The XNA spil studio ( XNA ) er en programmeringsmiljø udviklet af Microsoft , som hjælper dig med at oprette komplekse spil til computere , mobiltelefoner og Xbox-konsoller inde fra Visual Studio 2010 programmering platform. Animering sprites og modeller i XNA er vigtigt, fordi en enkel, animeret , todimensionale (2- D) sprite gør en stor forskel, når du medtage det i dine spil. Ting du skal
Visual Studio 2010
A 256 × 64 tekstur med fire rammer af samme størrelse.
Vis Flere Instruktioner
1
Open Visual Studio 2010 og gå til XNA spillets konstruktør. Opret en ny instans af " AnimatedTexture " klasse ved hjælp af denne kodeeksempel : Hej
private AnimatedTexture SpriteTexture , private const float Rotation = 0; private const float Scale = 2.0F , private const float Dybde = 0.5F ; offentlige Game1 () {
SpriteTexture = new AnimatedTexture ( Vector2.Zero , Rotation , Scale, dybde ) # if ZUNETargetElapsedTime = TimeSpan.FromSeconds (1 /30,0 ), # endif }
Bemærk at rammen sats må være 30 frames per sekund ( fps ), hvis du planlægger at bruge din animation på Zune . I dette eksempel er " ( 0,0) " er tekstur oprindelse. Teksturen har ingen rotation, er i en målestok på "2" og har en dybde på " 0,5 ".
2
Indlæs tekstur , der indeholder de fire rammer og opdele det i animationsrammer ved ved hjælp af denne prøve kode : Hej
private viewport viewport , private Vector2 objPos , private const int Frames = 4; private const int FramesPerSec = 2; beskyttet override void LoadContent () { spriteBatch = new spriteBatch ( GraphicsDevice ) SpriteTexture . Load (Content " objectanimated " Frames , FramesPerSec ) viewport = graphics.GraphicsDevice.Viewport , SHIPPOS = new Vector2 ( viewport.Width /2, viewport.Height /2) ;}
" AnimatedTexture " klasse indlæser tekstur og trækker det ind frames . Dette eksempel trækker to frames per sekund , i to sekunder. Erstat " objectanimated " med navnet på din sprite aktiv.
3
Bestem animationsrammer at vise ved at bruge " Opdater" -metoden. Brug denne kode som eksempel : Hej
beskyttet tilsidesætte void Update ( GameTime GameTime ) { float gået = ( float) gameTime.ElapsedGameTime.TotalSeconds ;//Tilføj dit spil logik her
SpriteTexture . . UpdateFrame (forløbet ), base.Update ( gameTime );} public void UpdateFrame ( float forløbet ) { if ( pause ) tilbagevenden; TotalElapsed + = forløbet , hvis ( TotalElapsed > TimePerFrame ) { Frame + +; Frame = Ramme % framecount ; TotalElapsed - = TimePerFrame ;}}
AnimatedTexture s " UpdateFrame " metoden modtager forløbne sekunder mellem opdateringer, og håndterer visning af forskellige rammer
4
Tegn sprite i spillets . " Tegn "-metoden ved at bruge " SpriteBatch.Draw "-funktionen på " AnimatedTexture " objekt . Brug denne eksempelkode for at tegne rette subrectangle af tekstur , der indeholder en sprite : Hej
beskyttet override void Tegn ( GameTime GameTime ) { GraphicsDevice.Clear ( Color.CornflowerBlue ) ;//Tilføj din tegning koden her
< p> spriteBatch.Begin (); SpriteTexture.DrawFrame ( spriteBatch , objPos ) spriteBatch.End (); base.Draw ( gameTime );} public void DrawFrame ( spriteBatch parti Vector2 screenPos ) { DrawFrame (batch , Frame , screenPos ) ;} public void DrawFrame ( SpriteBatch batch , int frame, Vector2 screenPos ) { int FrameWidth = myTexture.Width /framecount , rektangel sourcerect = new Rectangle ( FrameWidth * frame , 0, FrameWidth , myTexture.Height ), batch.Draw ( myTexture , screenPos , sourcerect , Color.White , Rotation , Origin, Scale, SpriteEffects.None , dybde) ;}
5
Kompiler og bygge projektet. Når du kører projektet , vil du se animationen oprettes med de fire billeder fra din oprindelige konsistens.