钥匙要点
- 游戏循环是任何游戏的心跳,是一个每秒运行多次的函数,并且有两个主要作业
- 更新正在发生的事情并绘制新场景。 Easeljs ticker类用于管理游戏循环的时间安排,暂停/恢复游戏循环并测量经过的时间。
- 游戏逻辑涉及添加用于发射镜头,更新显示器,移动射击,处理命中和结束游戏的功能。 easeLjs displayObjects支持一个hittest()方法,这使得可以轻松查看当前对象的位置是否存在点。
这是四个星期内四个帖子的系列中的第三部,它将向您展示如何使用HTML5,JavaScript,Winjs和CreateJS创建一个简单的Windows 8游戏。
该游戏基于XNA样本游戏“弹射战争实验室”。当我们为Windows 8开发基于Web技术的Windows 8的新版本时,我们将重复使用该游戏的资产。
在这篇文章中,我们将使用一些游戏逻辑和JavaScript将事物栩栩如生。
游戏循环
任何游戏的心跳是游戏循环。 这是一个每秒多次运行的函数,并具有两个主要作业 - 更新发生的事情,然后绘制新场景。
在第2部分中,我们已经进行了大纲:

现在的问题是,我们如何启动gameloop()函数并保持每秒多次运行?
easeljs ticker class
幸运的是,Easeljs的股票类别具有我们将使用的一些功能:
- 管理游戏循环的时机
- 暂停/恢复游戏循环
- 测量经过的时间
这是一个静态类,因此我们可以开始使用它。 在default.js中,添加一个新的startGame()函数,并在prepargame()末尾调用它:

在这里,我们告诉使用window.requestanimatimationframe来控制Gameloop函数的频率。
requestAnimationFrame是Web应用程序的相对较新的API,可帮助确保不必要地完成工作。 要了解为什么这比设置固定计时器(例如使用Settimeout())更好,请参见IE测试驱动器网站上的RequestAnimationFrame样本。

每当RequestAnimationFrame准备就绪时,我们的游戏循环都会运行。
“准备好,瞄准,开火!”
好的,现在我们有一个游戏循环的游戏,所以是时候添加一些乐趣了!
每个玩家/弹射器都将向另一个发射弹药/岩石。 我们需要知道目前是否开枪,转弯是谁以及镜头的移动方式。
首先,让我们添加更多变量到default.js:

现在,让我们通过将以下内容添加到update()函数:

目前,两个玩家都会自动发射(以随机的速度发射)。 AmmobitMap移至射击弹射器的顶部中心,并在有界范围内给予射速值(按屏幕分辨率调整)。
我们还将添加一个fireshot()功能以显示镜头并告诉游戏中的游戏:
更新显示
在我们在空中移动镜头之前,让我们专注于游戏循环方程式的第二半部分 - 绘制到屏幕上。 这通常非常复杂,但是Easeljs阶段会照顾我们的内容(所有孩子 - 位图,文字等 - 我们添加到舞台上),因此我们需要:这就是我们所需要的:

就是这样! 如果您运行游戏,则玩家1将自动开枪,而射门将出现在红色弹射器上…

…但是它不会让人感到不安。 让我们走动。
移动射击
让我们返回到update()函数,然后将逻辑添加到if(shotFlying)语句中:

不要运行它,我们仍然需要两个功能,但这是发生的事情:
- 线149&150 - 通过添加速度(可能为负数和/或左)移动镜头
第151行 - 将重力应用于慢速-
- 线153-155 - 镜头是否撞到了屏幕的左侧或右边缘?
>第157-160行 - 错过 - 结束射门和更改播放器- >
>行162-168 - 播放器1的射门 - 查看是否命中播放器2。如果是,则更新玩家2的生活。
- 行169-175 - 播放器2的射门 - 查看是否命中播放器1。如果是,则更新玩家1的生活。
>
-
让我们添加校园(位图)
功能:
关于Hittest的话题是什么? easeljs displayObjects(基于哪个位图)支持hittest()方法,这使得很容易查看当前对象的位置是否存在点。 不幸的是,我们正在缩放对象,而Hittest仅适用于原始尺寸,因此我们需要检查自己的命中率。 只是一点点数学,我们已经设定了。
处理命中

现在,添加
processHit()
函数:
这只是结束射门,改变玩家,并确保游戏还没有结束。
结束游戏

让我们结束游戏结束这篇文章。 添加最终游戏(图像)函数:
就是这样! 现在,您可以运行游戏,看看谁获胜。

下一步是什么?

我们在这一部分中增加了很多东西 - 事情正在绘画,移动,击球,结局……但是有两个张开的孔。 首先,播放器实际上没有玩,因此我们将接下来添加输入处理。 其次,事情非常安静,尤其是对于战争,所以我们也会折腾一些声音。
到第4部分:下周!
经常询问有关使用JavaScript创建简单Windows 8游戏的问题
>如何开始使用Windows 8的JavaScript创建游戏?您还需要安装Visual Studio,这是Windows 8应用程序的开发环境。拥有这些先决条件后,您可以首先在Visual Studio中创建一个新项目并选择“空白应用程序”模板。从那里,您可以开始在JavaScript中编写游戏逻辑,并使用HTML5和CSS设计游戏界面。
>
>我可以使用JavaScript创建的游戏示例是什么?可以用来创建各种游戏的编程语言。一些示例包括益智游戏,策略游戏,平台游戏,甚至3D游戏。可能性是无穷无尽的,借助正确的工具和资源,您可以创建您可以想象的任何类型的游戏。
>如何在JavaScript游戏中添加互动性?这些是发生特定事件时会触发的功能,例如鼠标单击或按键按下。例如,当用户单击游戏元素或“ onkeydown”事件时,您可以使用“ onclick”事件触发功能测试和调试我的JavaScript游戏?
测试和调试是游戏开发的关键部分。 Visual Studio提供了一个强大的调试工具,可让您浏览代码,检查变量并确定任何错误或错误。您还可以使用控制台登录消息并跟踪代码的执行。
>如何优化我的JavaScript游戏以进行性能?
>优化性能的JavaScript游戏涉及许多技术。其中包括最大程度地减少全局变量的使用,使用RequestAnimationFrame用于游戏循环,优化您的图像和资产以及使用有效的游戏逻辑算法。在各种设备和浏览器上测试游戏以确保其运行顺利也很重要。
>如何在我的JavaScript游戏中添加声音和音乐?使用HTML5音频API进行JavaScript游戏。这使您可以加载和播放声音文件,控制音量,甚至创建声音效果。您还可以使用诸如howler.js之类的库来简化过程并添加更高级的音频功能。
>一旦完成开发后,我如何在Windows Store上发布我的JavaScript游戏?您的游戏,您可以通过创建商店帐户,注册您的应用并提交认证来将其发布在Windows Store上。您需要提供有关游戏的屏幕截图,描述和其他信息。一旦您的游戏获得批准,它将可以在Windows Store上下载。
我可以将我的JavaScript游戏货币化吗?
是的,您可以以多种方式将JavaScript游戏货币化。一种选择是在Windows Store上出售您的游戏。您还可以包括应用内购买,玩家可以购买其他内容或功能。另一个选择是在您的游戏中显示广告,尽管应该很少这样做以避免破坏游戏玩法的体验。
> 我可以使用JavaScript为其他平台创建游戏吗?不限于Windows 8或任何特定平台。借助正确的工具和库,您可以创建在各种平台上运行的游戏,包括Web浏览器,移动设备甚至游戏机。一些与JavaScript进行跨平台游戏开发的流行库,包括Phaser,Pixi.js和Trix.js。
我在哪里可以通过JavaScript了解有关游戏开发的更多信息? W3Schools,Mozilla开发人员网络和CodeCademy等网站提供了有关JavaScript和游戏开发的教程和指南。还有很多书籍,在线课程和论坛,您可以在这里学习和获得其他开发人员的帮助。
以上是使用JavaScript创建一个简单的Windows 8游戏:游戏逻辑的详细内容。更多信息请关注PHP中文网其他相关文章!