Hvordan Animer i XNA

Hvordan Animer i XNA


Den XNA Game Studio (XNA) er et programmeringsmiljø som er utviklet av Microsoft som hjelper deg å lage komplekse spill for datamaskiner, mobiltelefoner og Xbox-konsoller fra i Visual Studio 2010 programmeringsplattform. Animere sprites og modeller i XNA er viktig fordi en enkel, animert, to-dimensjonale (2D) sprite gjør en stor forskjell når du tar den i spill.

Bruksanvisning

1 Åpne Visual Studio 2010 og gå til XNA spillets konstruktør. Opprett en ny forekomst av "AnimatedTexture" klasse ved hjelp av denne eksempelkoden:

privat AnimatedTexture SpriteTexture;

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

SpriteTexture = ny AnimatedTexture (Vector2.Zero,
Rotasjon, Scale, Dybde); hvis ZUNE

TargetElapsedTime = TimeSpan.FromSeconds(1 / 30.0); slutt om

}

Merk at bildefrekvensen må være 30 bilder per sekund (fps) hvis du har tenkt å bruke animasjon på Zune. I dette eksempel "(0,0)" er tekstur opprinnelse. Teksturen har ingen rotasjon, er på en skala fra "2", og har en dybde på "0,5".

2 Last inn tekstur som inneholder de fire rammer og del den i animasjonsrammer ved hjelp av denne eksempelkoden:

privat Viewview;
private Vektor2 objPos;
privat const int Frames = 4;
privat const int FramesPerSec = 2;
beskyttet ride 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);

}

Den "AnimatedTexture" class laster tekstur og trekker det inn i rammer. Dette eksemplet trekker to bilder per sekund, to sekunder. Erstatt "objectanimated" med navnet på din sprite eiendel.

3 Bestem animasjon rammer for å vise ved å bruke "Update" metoden. Bruk denne koden som et eksempel:

beskyttet ride void Update (Gametime Gametime)
{

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

SpriteTexture.UpdateFrame (forløpt);
base.Update (Gametime);

}
public void UpdateFrame (flyte forløpt)
{

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

}

Den AnimatedTexture er "UpdateFrame" metoden får forløpt sekunder mellom oppdateringer og håndterer visning av forskjellige rammer.

4 Tegn sprite i spillets "Tegn" metoden ved å bruke "SpriteBatch.Draw" -funksjonen på "AnimatedTexture" objekt. Bruk denne eksempelkoden for å trekke riktig underrektangelet av strukturen inneholder en sprite:

beskyttet ride void Draw (Gametime Gametime)
{

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

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

}
public void DrawFrame (SpriteBatch batch, Vektor2 screenPos)
{

DrawFrame(batch, Frame, screenPos);

}
public void DrawFrame (SpriteBatch batch, int ramme, Vektor2 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 Kompilere og bygge prosjektet. Når du kjører prosjektet, vil du se animasjonen opprettet med fire bilder fra den opprinnelige tekstur.