快捷搜索:

Windows Phone 7范例游戏Platformer实战8——精灵动画的

本文参考了木木二进制翻译的Learning XNA 3.0文章,以及CSDN上的 XNA根基一文。异常谢谢他们做出的精彩供献。

在上一小节先容了宝石的简单动画编程后,现在我们开始进修若何实现一个真正的动画,也便是若何将连续串的图片形成连贯的动作。下面是僵尸怪的精灵图片,我们可以看到它包孕10个动作,在XNA中恰是将这些动作连贯起来才形成我们看到的僵尸鬼的跑动。本小节我们便是环抱若何将该图片实现为僵尸怪的跑动展开的。

上面的10个小图片体现了僵尸怪跑动的所有动作,在实际制作时,我们平日将这些图片按顺序制作在一张大年夜图中,并且包管大年夜图中每个小图的尺寸是完全一样的。我们称这样的大年夜图为精灵帧序列图Sprite Sheets。

上节我们提过,我们是应用轮回的要领实现游戏界面的绘制,是以我们可以对包孕这10个动作的精灵图片进行解析,在用户视角停顿范围内绘制出僵尸怪的分化动作就可以了。那么我们若何实现这10个动作的分化呢,这就必要法度榜样来进行解析了。

首先我们必要将僵尸怪精灵图片加载到内容管道中,是以一个Texture2D纹理工具是必弗成少的。此外,为了让僵尸怪跑动的连贯,是以每帧显示的光阴也是要斟酌的,这个值要选择的相符游戏的出现效果,太小的话动画效果似乎一闪而过,太大年夜有让用户感觉僵尸怪被卡逝世。

我们在僵尸怪精灵图片看到一共有10个动作,而这个精灵图片的大年夜小为640*64像素,也便是说每个动作的宽度为64,高度也为64像素。

我们知道动画存在几种可能,一种便是当动画解析到着末一个动作时直接竣事。一种便是当着末一个动作解析完毕又从头开始播放,这两种也是我们Platformer游戏中应用的动画出现要领。这些都清楚了,那么我们就可以很轻松实现一个对精灵图片进行解析的动画类了。下面是动画类Animation的完备代码:

1class Animation

2{

3///

4/// 动画中的所有帧均按水平排列,僵尸怪的动画一共10帧

5///

6public Texture2D Texture

7{

8get { return texture; }

9}

10Texture2D texture;

11

12///

13/// 每帧显示的光阴,

14///

15public float FrameTime

16{

17get { return frameTime; }

18}

19float frameTime;

20

21///

22/// 动画解析到着末一帧时,是否从头开始再次播放

23///

24public bool IsLooping

25{

26get { return isLooping; }

27}

28bool isLooping;

29

30///

31/// 得到帧数,应用僵尸怪精灵图片的宽度/每帧的宽度即可得出,这里为10

32///

33public int FrameCount

34{

35get { return Texture.Width / FrameWidth; }

36}

37

38///

39/// 动画中每帧的宽度

40///

41public int FrameWidth

42{

43// Assume square frames.

44get { return Texture.Height; }

45}

46

47///

48/// 动画中每帧的高度

49///

50public int FrameHeight

51{

52get { return Texture.Height; }

53}

54

55///

56/// 动画类构造函数

57///

58public Animation(Texture2D texture, float frameTime, bool isLooping)

59{

60this.texture = texture;

61this.frameTime = frameTime;

62this.isLooping = isLooping;

63}

64}

您可能还会对下面的文章感兴趣: