通过本节课,你可以学会以下知识点:
下面,我们来初步改造中级篇引擎,包括:
- 使用扩展替代一些繁琐操作;
- 将通用的积木制作成全局积木;
创建文件夹
首先,我们可以为角色右键创建“实体”文件夹,将如下角色都放到“实体”文件夹。
这些角色被归纳为实体,是因为他们都有一个共同特征:会受摄像机影响,跟随滚动地图移动。(可以理解为都是显示在地图中的实体)
文件夹功能:
Gandi 可以为角色、造型、音频创建文件夹。收纳同类的资源,使项目更有条理。
注意:被加入文件夹的内容,名字会带上“文件夹名//”前缀。(手动重命名,名称中带有“//”,也会自动创建文件夹)
创建全局积木
- 接着,我们将上一节课制作的“通用”模块导入到项目中;同时,新建一个模块“Game”。他们的作用如下:
- “通用”模块:处理一些通用的需求,包括:克隆体交互,图层排序;
- “Game”模块:处理一些只在本游戏中会用到的需求,比如:跟随摄像头移动,碰撞检测,实体生成等等。
- 在中级篇作品中,绝大部分角色使用了图层排序的积木。
现在我们将这个积木制作成全局积木,方便各个角色调用:
- 在“通用”模块中创建,记得勾选不刷新屏幕。
- 为了更方便使用,我们添加主图层、附加图层的概念:
- 主图层作为大的图层层级;
- 附加图层可以作为主图层内部的图层排序依据;
例如,不同角色的图层关系可以安排如下:
- 接下来,我们将实体中渲染克隆体(跟随相机移动)的代码也做成全局积木:
- 为了方便控制实体类的显示渲染,我们使用如下的私有变量来控制显示。之后实体类直接通过修改变量来控制显示,而不使用左边的积木:
- 编写渲染克隆体的全局积木:(注:全局积木中用到的私有变量,使用的仍然是调用者的私有变量,全局模块并不会拥有属于自己的私有变量)
- 将实体类的渲染积木替换成下面的积木:在每一帧的末尾,统一进行渲染显示,其他时候通过设置变量来修改方向、造型等显示内容。
(注:为了变量名字简洁,这里将“位置x、位置y”改名为"x、y")
注:由于不再使用原版的“切换造型”、“旋转”等积木,相应的积木要替换为对私有变量“造型”、“方向”的操作:
(这个过程非常繁琐,你可以不用跟着做。以下是需要变更的代码中的一小部分,作为例子参考)
4将碰撞检测类的积木,做成全局积木:
5还有一些通用的积木,也可以做成全局积木,例如:
使用扩展
一些功能性积木,可以使用扩展替代。例如:
- 自制积木“求点 1 朝向点 2 方向”,可以直接使用 Arkos扩展扩展中的已有积木:
- 求两点距离的自制积木,也可以直接用扩展积木替代:
- 之前我们使用私有变量来判断是否为克隆体,现在可以直接使用多莉扩展的积木:
- 在中级篇中,武器的每个造型都需要一个额外的垂直翻转造型,这使得武器的造型数量翻倍
现在,我们可以通过扩展,实现垂直翻转,从而直接省去一半的多余造型:
这样,我们完成了使用全局积木、扩展对中级篇引擎进行初步改造。
下一节 02 应用克隆体引擎
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG303/Arkos/Lec2/02&type=comment"
title="{射击课高级篇-第二课-02}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>