频道栏目
读书频道 > 软件开发 > C# > 精通C#游戏编程
8.4.3 使用补间
2012-08-01 16:45:21     我来说两句
收藏   我要投稿

本文所属图书 > 精通C#游戏编程

本书通过引导读者创建一个基本的游戏,展示了如何使用c#和OpenGL一步步地开发出简单、整洁而可靠的代码。C#是一种高级编程语言,而OpenGL是业界显示图形最常用的方法。本书概述了创建优秀游戏项目时采用的方法和...  立即去当当网订购

现在已经完成了Tween类的创建,接下来就展示该类的一些强大的能力。和前面一样,首先需要创建一个新状态,将其命名为TweenTestState。

这个状态需要将本书前面使用的笑脸纹理添加到项目中,并将其Copy To Output Directory属性设为Copy if newer。在窗体构造函数中,应该将笑脸纹理加载到TextureManager中。

_textureManager.LoadTexture("face", "face_alpha.tif");

在加载了纹理后,可以使用它在TweenTestState类中创建一个精灵。

class TweenTestState : IGameObject

{

Sprite _faceSprite = new Sprite();

Renderer _renderer = new Renderer();

Tween _tween = new Tween(0, 256, 5);

public TweenTestState(TextureManager textureManager)

{

_faceSprite.Texture = textureManager.Get("face");

}

 

#region IGameObject Members

 

public void Process(double elapsedTime)

{

if (_tween.IsFinished() != true)

{

_tween.Process(elapsedTime);

_faceSprite.SetWidth((float)_tween.Value());

_faceSprite.SetHeight((float)_tween.Value());

}

}

 

public void Render()

{

Gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);

_renderer.DrawSprite(_faceSprite);

_renderer.Render();

}

#endregion

}


补间会将精灵的宽度和高度由0一直变为256。运行代码并查看动画。精灵将以一种平滑美观的方式逐渐变大。接下来只对代码做一些小小的修改,但结果却会产生巨大变化。

Tween _tween = new Tween(0, 256, 5, Tween.EaseInExpo);

再次运行程序,现在精灵会逐渐变大。然后变化会逐渐加快,直到变到最大。一点小小的修改,动画的播放方式却彻底改变了。这是调整已有动画的一种很好的方法。尝试其他的补间函数,查看它们的用途,并试着修改其余的参数,以便了解补间函数的工作原理。

Tween _alphaTween = new Tween(0, 1, 5, Tween.EaseInCirc);

Color _color = new Color(1, 1, 1, 0);

public void Process(double elapsedTime)

{

if (_tween.IsFinished() != true)

{

_tween.Process(elapsedTime);

_faceSprite.SetWidth((float)_tween.Value());

_faceSprite.SetHeight((float)_tween.Value());

}

 

if (_alphaTween.IsFinished() != true)

{

_alphaTween.Process(elapsedTime);

_color.Alpha = (float)_alphaTween.Value();

_faceSprite.SetColor(_color);

}

}


这里添加了另外一个补间。该补间使精灵的透明度从0逐渐变为完全不透明。这是淡入文本的一种很好的方法。精灵的位置也可以通过补间改变。尝试使用补间,将精灵从屏幕外移动到屏幕的中央。另外一个很好的示例是将精灵的透明度从0变化为1,然后引发另一个补间,将透明度从1变化为0。这些函数可以逐个调用,使补间循环执行。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:8.4.2 Tween类
下一篇:8.5 矩阵
相关文章
图文推荐
排行
热门
最新书评
文章
下载
读书
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站