调整帧率35.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
调整帧率35

调整帧率| 35 调整帧率 虽然三环动画看起来相当不错,当您运行该项目,有 可能是你的动画运行时太快或太慢,你想 变化的速度,在它的动画。 刚才我提到的帧率,但这里有一个快速提醒:帧率一般 指的是每秒游戏多次重绘整个场景。在XNA中, 默认是每秒60帧(fps)。除非你运行在当前项目 很慢的机器,你最有可能看到的是三个环形象工程 画在60帧。 还有一个不同类型的帧率,有关个别动画。这 帧率(通常被称为动画速度)反映了在一个特定率 通过在图像动画精灵表周期。现在,你的动画 这三个圈的速度是60帧图像,因为你是从一个新的形象画 精灵表每次重绘场景(这是发生在60帧)。 图2-9。三个纺纱环...没有什么比这更好的! 36 |第2章:有趣的小精灵 有几种不同的方法可以改变你的三部动画速度 环动画。新华社的游戏类有一个属性叫做TargetElapsedTime告诉 XNAhow长之间等待的Game.Update方法调用。本质上讲,这 代表每帧之间的时间量正在绘制。默认情况下这是设置 1 / 60秒,这给新华社默认60帧。 要改变你的项目帧率,在末尾加上了下面的代码行 在Game1构造函数: TargetElapsedTime =新的TimeSpan(0,0,0,0,50); 这告诉XNAto只能叫Game.Update每50毫秒,相当于一 帧率20帧。编译并运行它的游戏,你应该看到相同的三 环动画,但动画在更慢的速度。尝试不同的 在构造的TimeSpan值(例如,1毫秒),看看有多快 通过动画精灵表周期。 理想的情况下,你要保持在60帧,这意味着你可以帧率 通常保留默认帧率孤单。为什么是每秒60帧的标准? 这是一个监视器或电视机的最低刷新频率将不会呈现 闪烁时,人眼观看。 如果你把帧率太高,XNAcant保证你将有种 期待你的表现。该图形卡的GPU的速度,速度 电脑的处理器,你消耗的资源数量,以及你的速度 代码,请向你的比赛将决定是否有那个峰很长的路要走 性能。 幸运的是,XNAhas提供一种方法来检测如果您的游戏是从性能痛苦 问题。该GameTime对象,它是通过为参数均 Update和Draw方法,有一个布尔属性叫做IsRunningSlowly。你 可以随时检查这些方法的时间内这个属性,如果它的价值是真实的,新华社 无法跟上您所指定的帧率。在这种情况下,XNAwill 实际上跳过调用绘制,努力跟上你打算加快。这可能 是不敢大意,你的愿望在任何比赛,因此,如果这个不断发生,你可能 要提醒用户,她的机器是有一个很难跟上你 游戏。 调整动画的速度 同时调整了游戏本身并不影响动画的帧率三个环 速度,这不是最理想的方法这样做。这是为什么?当您更改帧率 该项目的,它会影响所有图片动画的速度,以及这样的话: 移动对象的速度等。如果你想要一个动画形象,在60帧 另以30 fps的动画,你将无法完成,通过调整 整个游戏的帧率。 调整动画的速度| 37 删除行,你在上一节说,设置TargetElapsedTime 委员Game1类,并让我们尝试了不同的路线。 当调整一个精灵的动画的速度,你通常希望这样做的精灵 孤单。这是可以做到的方式移动到下一帧中通过建立精灵 手册只当指定时间已过。要做到这一点,添加两个类级变量, 您将使用跟踪动画帧之间的时间: 诠释timeSinceLastFrame = 0; 诠释millisecondsPerFrame = 50; 该timeSinceLastFrame变量将被用于跟踪多少时间已经过去了 因为动画帧被改变。该millisecondsPerFrame变量将 用于指定要多少时间等待移动当前帧之前 索引。 动画的帧的实际循环发生在你的更新方法。因此,下 第一步是检查动画帧之间的运行时间和运行的代码 将当前帧只有在需要的运行时间已经达到。修改 您添加到更新方法的代码,包括周围的if语句 这里显示的变化(以粗体显示): timeSinceLastFrame + = gameTime.ElapsedGameTime.Milliseconds; 如果(timeSinceLastFrame millisecondsPerFrame) { timeSinceLastFrame -= millisecondsPerFrame; + + currentFrame.X; 如果(currentFrame.X = sheetSize.X) { currentFrame.X = 0; + + currentFrame.Y; 如果(currentFrame.Y = sheetSize.Y) currentFrame.Y = 0; } } 正如你可以看到这里,您可以使用属性来判断gameTime.ElapsedGameTime 多少时间已经过

文档评论(0)

cynthia_h + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档