Difference between revisions of "Animation"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
Line 11: Line 11:
  
 
<syntaxhighlight lang=csharp>
 
<syntaxhighlight lang=csharp>
// Get the width of the player ship
+
// Get the width of the player ship
// The time since we last updated the frame
+
// The time since we last updated the frame
int elapsedTime;
+
int elapsedTime;
  
// The number of frames that the animation contains
+
// The number of frames that the animation contains
int frameCount;
+
int frameCount;
  
// The index of the current frame we are displaying
+
// The index of the current frame we are displaying
int currentFrame;
+
int currentFrame;
  
// The color of the frame we will be displaying
+
// The color of the frame we will be displaying
Color color;
+
Color color;
  
// The area of the image strip we want to display
+
// The area of the image strip we want to display
Rectangle sourceRect = new Rectangle();
+
Rectangle sourceRect = new Rectangle();
  
// The area where we want to display the image strip in the game
+
// The area where we want to display the image strip in the game
Rectangle destinationRect = new Rectangle();
+
Rectangle destinationRect = new Rectangle();
  
// Width of a given frame
+
// Width of a given frame
public int FrameWidth;
+
public int FrameWidth;
  
// Height of a given frame
+
// Height of a given frame
public int FrameHeight;
+
public int FrameHeight;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
==Change the Initialize method==
 
==Change the Initialize method==
 
<syntaxhighlight lang=csharp>
 
<syntaxhighlight lang=csharp>
public void Initialize(Texture2D animation, Vector2 position)
+
public void Initialize(Texture2D animation, Vector2 position)
 +
{
 +
PlayerAnimation = animation;
  
{
+
// Set the starting position of the player around the middle of the screen and to the back
PlayerAnimation = animation;
+
Position = position;
  
// Set the starting position of the player around the middle of the screen and to the back
+
// Set the player to be active
Position = position;
+
Active = true;
  
// Set the player to be active
+
// Set the player health
Active = true;
+
Health = 100;
 
 
// Set the player health
 
Health = 100;
 
 
 
 
 
this.color = Color.White;
+
this.color = Color.White;
this.FrameWidth = 115;
+
this.FrameWidth = 115;
this.FrameHeight = 69;
+
this.FrameHeight = 69;
this.frameCount = 8;
+
this.frameCount = 8;
  
// Set the time to zero
+
// Set the time to zero
elapsedTime = 0;
+
elapsedTime = 0;
currentFrame = 0;
+
currentFrame = 0;
}
+
}
  
<syntaxhighlight lang=csharp>
+
</syntaxhighlight>

Revision as of 14:19, 25 March 2017

This will show you how to animate a character. The idea is to use a texture which is actually a strip of frames, then knowing the width and height of each frame should allow you to only display the part of the texture which represents the current frame.

Changing the Player Class

Firstly, change the name of the Texture2D to something more appropriate eg PlayerAnimation:

public Texture2D PlayerAnimation;

We now need to add the following variables to the player to control the frame:

// Get the width of the player ship
// The time since we last updated the frame
int elapsedTime;

// The number of frames that the animation contains
int frameCount;

// The index of the current frame we are displaying
int currentFrame;

// The color of the frame we will be displaying
Color color;

// The area of the image strip we want to display
Rectangle sourceRect = new Rectangle();

// The area where we want to display the image strip in the game
Rectangle destinationRect = new Rectangle();

// Width of a given frame
public int FrameWidth;

// Height of a given frame
public int FrameHeight;

Change the Initialize method

public void Initialize(Texture2D animation, Vector2 position)
{
	PlayerAnimation = animation;

	// Set the starting position of the player around the middle of the screen and to the back
	Position = position;

	// Set the player to be active
	Active = true;

	// Set the player health
	Health = 100;
			 
	this.color = Color.White;
	this.FrameWidth = 115;
	this.FrameHeight = 69;
	this.frameCount = 8;

	// Set the time to zero
	elapsedTime = 0;
	currentFrame = 0;
}