使用phaser3进行游戏开发系列一

Posted rysefgfzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用phaser3进行游戏开发系列一相关的知识,希望对你有一定的参考价值。

写在前面

之前写了一篇使用phaser3开发微信小游戏,感觉太突兀了,因为对大多数人来说,phaser太陌生了。所以多写几篇文章,来帮助喜欢phaser的各位进行一个简单的过渡。
这系列文章最终将会创建一个小兔子无限跳跃的H5小游戏。这个游戏是作者是super tommy,同时也是phaser3入门教程一书的作者,我只是个搬运工…
1、phaser官网:
官网地址
2、本系列文章将完成的游戏,是phaser3英文入门教程中的bunny_jump,教程文档下载地址在这里
入门书籍下载地址
提取码 3l4s

如果英文过硬,建议直接阅读原文档和phaser官方介绍,我这里仅仅把实现过程翻译一遍,对一些地方表达一下自己的理解。
3、使用phaser进行游戏开发,需要web环境。不能仅仅使用浏览器打开本地html页面,至少需要一个本地可运行的完整的web后端,因为游戏页面会涉及到跨域问题。
4、有javascript语法基础。用Phaser编写游戏使用的是JavaSript,因此需要了解JS的基本语法。

废话不多说,正式开始。

环境准备

1、安装合适的文本编辑器。推荐VScode,免费,好用,添加JS配置后,可以进行Phaser方法智能提示,截图如下:

2、设置web服务器。搭建一个你熟悉的本地web服务器,如果没有考虑好使用哪一个,不妨试试node.js吧。node.js有很多优秀的模块,如果仅仅是用来当作web容器,那么node.js的http-server模块是一个非常轻量化的选择,它支持以一个文件夹作为静态资源地址,而这样的服务已经足够我们使用了。安装node.js和安装http-server模块将不做赘述,网上有很多教程,后面使用node运行一个本地服务作为web容器。这里给一张截图,说明下用http-server有多爽,仅一行代码开启服务,没有一系列的配置。
访问 localhost:8080/ 将以列表形式直接展示bunny_jump目录下的全部文件。

开始编写代码

创建一个文件夹,命名为bunny_jump

这个文件夹将是我们的项目根目录。先贴下目录结构,进行简单介绍:

bunny_jump
	|--src		源码目录
		|--lib	核心文件目录
			|--phaser.js	自定义模块,导出Phaser变量
			|--phaser.min.js	Phaser源码压缩文件
		|--scenes	场景文件夹
			|--Game.js	游戏场景文件
		|--types	phaser类型定义文件
			|--phaser.d.ts	这是Phaser类型定义,里面是Phaser各种类型定义,配置VScode,可以智能提示
		|--main.js	游戏的入口文件
	|--index.html	运行游戏的页面
	|--jsconfig.json	指定根文件和JavaScript语言服务提供的功能选项,如果不理解暂时可以不用管它

大致结构如上,有些不理解的地方,可以网上查一下资料,比如 .d.ts文件以及jsconfig.json文件的作用,一查就有了。我们继续。

创建index.html文件

在 bunny_jump 文件夹根目录创建 index.html,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="">
    <title>Game</title>
    <!-- 禁用掉favicon.ico请求,不然每次都会出现404-->
    <link rel="icon" href="data:;base64,=">
    <!--  引入phaser核心文件 -->
    <script src="./src/lib/phaser.min.js"></script>
</head>
<body>
	<!-- 这个div块可以添加,也可以不添加,如果没有div,那么phaser会挂载到body标签上,后面代码会进行说明 -->
    <div id="game" style="margin: 0 auto;width: 640px;height: 360px;">
    </div>
    <!-- 引入我们的游戏入口文件,注意这里是按照模块引入的,是module -->
    <script type="module" src="./src/main.js"></script>
</body>
</html>

这里只需要注意一点,我们是按照模块引入的main.js。关于ES6的模块,可以看阮一峰老师的这个文章:
ES6 模块介绍

创建jsconfig.json文件


    "compilerOptions": 
        "module": "es6",
        "target": "es6"
    

这个文件主要是用来告诉VScode这是一个JavaScript项目,以及JS编译选项。这个想了解的话,可以网上查一下就可以了。这个文件不是游戏开发的重点…

下载phaser.min.js和phaser.d.ts

这里贴一下下载地址
phaser-3.50.0的下载地址
打开后页面时这样的:

	|--dist
		|--phaser.min.js  这个是phaser3源码压缩文件
	|--types
		|--phaser.d.ts	这个是我们需要的类型定义文件

把phaser.min.js 放在我们的 /src/lib目录下
把phaser.d.ts 放在 /src/types 目录下
如果没有打开,你可能需要梯子。啥?没有梯子,那就用我的这个吧,这样你就没法看到phaser的介绍了,有点遗憾。网盘下载地址:
phaser.min.js
提取码 urp3
phaser.d.ts
提取码 urp3

创建Phaser.js模块文件

在这里,我们导出Phaser变量,供其他模块引用。就一行代码…没漏

export default window.Phaser;

创建游戏入口文件

在 /src 目录下创建main.js文件,这个文件是整个游戏的入口文件,在前面的index.html中最后引入的就是这个文件。

import Phaser from './lib/phaser.js'  // 引入 ./lib/phaser.js模块,这个模块是我们上面写的一行代码
export default new Phaser.Game(
    type: Phaser.CANVAS, // phaser渲染的方式,有Auto,WebGL,Canvas
    parent: 'game',  // 游戏挂载的dom节点,也就是我们之前index.html中的div,也可以直接挂到body上
    width: 800, // 游戏区域的宽度
    height: 600, // 游戏区域的高度
    backgroundColor: '#FFFFFF', // canvas的背景色,默认是黑色,这里设置成白色
	scene: // 游戏的场景
      create:function () 
          console.log('hello');
        
    ,
    physics: // 物理系统,可以进行配置
        default:'arcade',
        arcade:
            gravity: // 重力
                x:0, // 水平方向
                y:10, // 竖直方向
            ,
            debug:true, // 开启调试模式
        
    
);

好,到这里就可以贴Phaser3的文档了,之前都用不到,从现在开始,你需要频繁翻阅文档,因为phaser有很多可配置的选项,全记下来有点强人所难,所以还是把文档地址保存在浏览器书签吧,方便随时打开。打开后页面如下:

phaser3官方文档
可以看到,文档已经归好类了,我们最常翻阅的应该是Scene这个类别下的。由于文档是英文的,所以可能需要借助翻译软件,但是文档上都有用法的例子,而且phaser的demo也很全面,几乎所有模块都有实例教程,不用太担心。
phaser3的demo列表地址
demo列表是phaser3的全部例子,这里也按照类别进行归纳,应该可以轻松找到你需要的模块样例。
demo页面打开后如下:

我们就以游戏入口文件的配置来举例,看看怎么查阅文档。
起步时,我相信每个刚接触的人都不知道文档在哪里,所以你可以先大致浏览一遍文档的内容,把页面里面的标签都点一点,看不懂也没关系,用翻译软件先直译一遍,看个大概,知道每个标签对应的页面内容是什么,这样就知道有问题该去哪个页面查。我们现在的目标是查询游戏配置文件,这个文件文档可以通过多个方式找到。
假设我们不知道该怎么查,第一步,打开demo列表,找到Game Config,哎,一下就找到了…就是这么简单,打开,你会发现这里面介绍了GameConfig文件的各个字段用例。
我们肯定不能满足与这一步,打开文档页面,在这里你可以通过Classes下拉框,找到phaser的全部类定义,自然就包括我们需要的Game类,配置文件就是传递给Game类构造函数的一个参数,所以我们打开Game类,如下图:

打开后如下图,这里就有我们需要的页面链接。打开链接自己看吧,然后尝试给main.js的配置文件增加几个字段,修改一下挂载的节点等等,动一动手,实际操作一下,只看不做永远也学不实在。


启动你的服务器,然后打开浏览器,访问 localhost:8080/ 或者你ip+端口,这时应该可以显示一个空白块,F12打开控制台,可以看到 hello 字符串。之所以不用在路径输入 index.html 是因为http-server模块把index.html作为默认页面,如果是你自己配置的服务器,需要按照你的服务器配置地址来访问。如下图:

小结

这篇文章先到这里,下一篇继续。如果觉得写的还可以,可以点个赞支持一下。如果有写的不对的地方可以发邮件到:1501843499@qq.com,有时间看到邮件就会回复,欢迎讨论学习phaser。也可以扫一扫小游戏码体验一下,感谢~

以上是关于使用phaser3进行游戏开发系列一的主要内容,如果未能解决你的问题,请参考以下文章

使用phaser3进行游戏开发系列二

使用phaser3进行游戏开发系列二

使用Phaser3进行微信小游戏开发

使用 Phaser3+Matter.js 实现“合成大西瓜”游戏

phaser3开发微信小游戏样例

phaser3开发微信小游戏样例