频道栏目
读书频道 > 软件开发 > C# > 精通C#游戏编程
8.4.1 补间概述
2012-08-01 16:43:15     我来说两句
收藏   我要投稿

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

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

通过一个示例了解补间的工作原理是最简单的,然后我们将深入探究其细节。可以在已有的代码库中使用这个状态,但是如果想要创建一个新项目,就要添加对Tao.DevIL的引用,以及添加Sprite、Texture和TextureManager类。

class TweenTestState: IGameObject

{

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

Sprite _sprite = new Sprite();

 

public SpriteTweenState(TextureManager textureManager)

{

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

_sprite.SetHeight(0);

_sprite.SetWidth(0);

}

 

public void Render()

{

// Rendering code goes here.

}

 

public void Update(double elapsedTime)

{

if (_tween.IsFinished() != true)

{

_tween.Update(elapsedTime);

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

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

}

}

}

代码中使用Tween对象,在5s内使一个精灵从无变到大小为256。这里的Tween构造函数接受3个参数。第一个参数是初始值,第二个参数是目标值,最后一个参数是从初始值变化到目标值所需的时间。


更新循环检查补间是否完成。如果没有,就更新补间。精灵的宽度和高度被设为补间的值,该值在0~256之间。

在上面的示例中,补间线性地从初始值变化到最终值。这意味着在2.5s后,补间的值变为128。补间并非必须是线性的,在变化到目标值的过程中,它们可以逐渐加快变化速度,或者逐渐减慢变化速度。通过使用一个时间函数表示位置,可以获得这种改变补间类型的能力。

public void function(double time)

{

// Create a position using the time value

return position;

}

实际的补间函数要比上面的代码复杂一些。下面的函数用于执行线性插值。

public static double Linear(double timePassed, double start, double distance,double duration)

{

return distance * timePassed / duration + start;

}

补间代码默认使用线性补间,但是可以添加许多不同的补间。图8-20显示了许多这样的补间。

Internet上有许多Flash补间函数,将它们转换成C#代码并不困难。


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

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

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