Hoe Animate in XNA



De XNA Game Studio (XNA) is een programmeeromgeving, ontwikkeld door Microsoft, die helpt u bij het maken van complexe games voor computers, mobiele telefoons en Xbox-consoles uit binnen het programmeringsplatform van Visual Studio 2010. Animeren sprites en modellen in XNA is belangrijk, omdat een eenvoudige, animatie, tweedimensionale (2D) sprite een groot verschil maakt wanneer u deze in uw games opneemt.

Instructies

1

Open Visual Studio 2010 en ga aan de constructor van het spel XNA. Maak een nieuw exemplaar van de klasse van de "AnimatedTexture" met behulp van deze voorbeeldcode:

privé AnimatedTexture SpriteTexture;

private const float Rotation = 0;
private const float Scale = 2.0f;
private const float Depth = 0.5f;
public Game1()
{

SpriteTexture = new AnimatedTexture(Vector2.Zero,
Rotation, Scale, Depth);
Als ZUNE

TargetElapsedTime = TimeSpan.FromSeconds(1 / 30.0);endif

}

Let erop dat de framerate 30 frames per seconde (fps) zijn moet als u wilt uw animatie gebruiken op Zune. In dit voorbeeld "(0,0)" textuur van oorsprong is. De textuur heeft geen rotatie, is op een schaal van "2" en heeft een diepte van "0,5."

2

Laden van de structuur met de vier frames en verdeel het in animatieframes met behulp van deze voorbeeldcode:

privé Viewport viewport;
privé Vector2 objPos;
Private const int Frames = 4;
Private const int FramesPerSec = 2;
beschermde 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);

}

De "AnimatedTexture" klasse laadt de textuur en trekt het in frames. In het volgende voorbeeld worden twee frames per seconde, twee seconden getekend. "Objectanimated" vervangen door de naam van uw sprite actief.

3

Het bepalen van de animatieframes wilt weergeven met behulp van de methode van de "Update". Gebruik deze code als voorbeeld:

beschermde override void Update (kort kort)
{

float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
//Add your game logic here.

SpriteTexture.UpdateFrame(elapsed);
base.Update(gameTime);

}
public void UpdateFrame(float elapsed)
{

if (Paused)
return;
TotalElapsed += elapsed;
if (TotalElapsed > TimePerFrame)
{
Frame++;
Frame = Frame % framecount;
TotalElapsed -= TimePerFrame;
}

}

De AnimatedTexture van "UpdateFrame" methode ontvangt de verstreken seconden tussen de updates en de weergave van de verschillende frames worden verwerkt.

4

Tekent de sprite in het spel van de "Tekenen" methode met behulp van de functie van "SpriteBatch.Draw" op het "AnimatedTexture"-object. Gebruik deze voorbeeldcode om te tekenen van de juiste subrectangle van de textuur met een sprite:

beschermde override void Draw (kort kort)
{

GraphicsDevice.Clear(Color.CornflowerBlue);
//Add your drawing code here

spriteBatch.Begin();
SpriteTexture.DrawFrame(spriteBatch, objPos);
spriteBatch.End();
base.Draw(gameTime);

}
openbare nietige DrawFrame (batch SpriteBatch, Vector2 screenPos)
{

DrawFrame(batch, Frame, screenPos);

}
openbare nietige DrawFrame (SpriteBatch batch, int frame, Vector2 screenPos)
{

int FrameWidth = myTexture.Width / framecount;
Rectangle sourcerect = new Rectangle(FrameWidth * frame, 0,
FrameWidth, myTexture.Height);
batch.Draw(myTexture, screenPos, sourcerect, Color.White,
Rotation, Origin, Scale, SpriteEffects.None, Depth);

}

5

Compileren en het project te bouwen. Wanneer u het project uitvoert, ziet u de animatie gemaakt met de vier frames uit uw oorspronkelijke textuur.