《HTML5 2D游戏编程核心技术》——第3章,第3.6节制作基于时间的运动

简介:

本节书摘来自华章出版社《HTML5 2D游戏编程核心技术》一书中的第3章,第3.6节制作基于时间的运动,作者[美] 戴维·吉尔里,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.6 制作基于时间的运动
游戏帧速率是会变化的,但是不能允许变化的帧速率影响到游戏中物体运动的速率,包括背景。可能干扰到游戏动画的任何噪声,都不应该成为影响生成平滑运动的原因。例如,不管潜在的动画帧速率是多少,Snail Bait游戏都会以每秒25个像素的速率滚动背景。运动必须是基于时间的,也即它仅仅依赖时间(例如,像素/秒),而不是动画帧速率。
对于任何动画帧来说,使用基于时间的运动来计算需要移动的像素数量都是简单的:使用自上一动画帧以来经过的时间(以秒为单位)乘以物体运动的速率。当你使用上一个动画帧经过的时间(秒/帧)乘以速率(像素/秒)时,秒被约掉,得到的结果以像素/帧为单位,从而得到当前的时间帧里需要移动的像素点数。
程序清单3.15显示了Snail Bait游戏如何通过使用基于时间的运动来计算背景的偏移量。
程序清单3.15 设置背景偏移量


45b786796537479d68affd8a0d30c9d7d8c30622

为了计算当前帧内背景需要移动的像素数,setBackgroundOffset()函数使用前一个动画帧到当前动画帧的时间间隔,以秒为单位,乘以背景移动速率。然后将那个值加入到背景的偏移量中。
为了能够持续地滚动背景,setBackgroundOffset()函数会在偏移量小于零或者大于背景的宽度时,重新将背景的偏移量置为零。
Snail Bait游戏使用基于时间的运动来移动游戏中的所有物体,不仅仅是背景。

相关文章
|
移动开发 前端开发 Shell
《HTML5 Canvas核心技术 图形、动画与游戏开发》 读书笔记
《HTML5 Canvas核心技术 图形、动画与游戏开发》 读书笔记
|
6月前
|
前端开发
html_css模拟端午赛龙舟运动
html_css模拟端午赛龙舟运动
47 1
|
移动开发 监控 前端开发
【phaser】快速实现HTML5 2d小游戏
使用 js 的 游戏框架 phaser 实现 html 小游戏
364 0
【phaser】快速实现HTML5 2d小游戏
|
JSON 移动开发 前端开发
基于 HTML5 Canvas 的简易 2D 3D 编辑器
不管在任何领域,只要能让非程序员能通过拖拽来实现 2D 和 3D 的设计图就是很牛的,今天我们不需要 3dMaxs 等设计软件,直接用 HT 就能自己写出一个 2D 3D 编辑器,实现这个功能我觉得成就感还是爆棚的,哈哈!只要你会想,能做,就能根据这个编辑器延展成 big thing! 本例地址:http://www.
1318 0
|
移动开发 前端开发 HTML5
基于HTML5 Canvas 点击添加 2D 3D 机柜模型
今天又返回好好地消化了一下我们的数据容器 DataModel,这里给新手做一个典型的数据模型事件处理的例子作为参考。这个例子看起来很简单,实际上结合了数据模型中非常重要的三个事件处理的部分:属性变化事件监听、选中变化事件监听以及数据模型变化事件监听。
1252 0
|
移动开发 HTML5
基于HTML5的WebGL实现的2D3D迷宫小游戏
为了实现一个基于HTML5的场景小游戏,我采用了HT for Web来实现,短短200行代码,我就能实现用“第一人称”来操作前进后退上下左右,并且实现了碰撞检测。 先来看下实现的效果: http://hightopo.
1273 0
|
Web App开发 JavaScript
《HTML5+JavaScript动画基础》——1.2 帧与运动
自然,这是有代价的。随着系统变得越来越大,规则变得越来越复杂,电脑必须能够迅速地计算出下一份图像描述,并将其显示出来。如果你想保持一定的帧率,那么给予电脑的处理时间(毫秒级)就极其有限。如果电脑无法及时完成计算,帧率就会下降
1796 0
|
移动开发 Java HTML5
《HTML5游戏编程核心技术与实战》——导读
对游戏的热爱使我萌发了写书的念头。漫画和电子游戏是童年最美好的回忆,任天堂的红白机陪伴着我度过了童年最快乐的时光,20世纪80年代,大街小巷的街机室成了孩子们快乐的天堂。随着时光流逝,许多经典的游戏画面已成为过去,但对游戏的热情依然不减,希望能借此书得以慰藉逝去的青春。青春不在,游戏热血永存!
1665 0