本指南篇幅较长,建议结合目录的跳转功能阅读。( ̄▽ ̄)
注:教程使用的UI界面与不同版本的界面可能有所差异。
目录(完成度60%)
0 开始
欢迎进入属于你的NSMX的世界!
New Super Mario X(新超级马里奥之未知世界)是一款类似于超级马里奥制造,有着高度自由度的沙盒类马里奥同人游戏。
你可以在NSMX里设计属于自己的地图,也可以把创作的成果分享给他人。同时,NSMX兼容SMX创作的关卡,SMX设计师们可以在NSMX中继续创作自己的作品。
游戏默认操作方式:
- 键盘:上下左右键控制玩家移动,X键加速,Z键跳跃,Enter键确认,Esc键暂停。
- 手柄:摇杆上下左右控制玩家移动,RT键加速,B键跳跃,START键确认,BACK键暂停。
- 你可以在启动器的设置中修改游戏操作方式。
快速开始:
- 如果你是游戏玩家,你可以在启动器的选择地图下拉框中选择地图,点击游玩即可开始游戏。
- 如果你是游戏设计师,你可以在启动器中点击创造地图打开游戏编辑器主程序。在主程序界面内新建并命名工程,在项目工具栏的第一行右键选择新建关卡,即可进行关卡编辑操作。
0.1 NSMX和SMX
什么是SMX?
SMX概念图
SMX历史及简介
著名的中国超级马里奥之『任天堂水管修理公司』里有一个著名的人,叫MarioX。
而SMX则是Super MarioX(其实也可以叫Gsksoft,有人还叫他编程男)的作品Super Mario X的简写。
游戏发生在蘑菇王国,马里奥(Mario)为了营救被库巴(Koopa)挟持的碧奇(Peach)公主而开始了自己新的冒险。玩家将操作马里奥,在奇幻的蘑菇王国中冒险,穿越草原、沙漠、雪地、地底、空中、城堡等各种关卡,靠着蘑菇、榔头与火力花的支持,与许多熟悉的老面孔周旋。
游戏基本采用了SMA4的游戏单位和游戏设定(当然也调整了惯性系统的数据),加上部分SMB和NSMB的单位并支持了更多新的游戏特性。
与其他同类游戏(不包括[永远的马里奥]4.0及4.0以上版本)不大相同的是,本游戏附带了一个美观而又十分实用(个人感觉)的地图编辑器。
在游戏的同时,你可以设计出更多的地图,体验到更多的游戏乐趣。
用最简单的方式来表示本游戏的特点,那就是:
SuperMarioX = SuperMarioBros. + SuperMarioAdvance + NewSuperMarioBros. + 地图编辑器 + X
SMX专区:SMX官网
SMX的作者Gsksoft由于工作发展和个人生活的原因决定终止SMX的开发,制作新SMX的计划也在SMX吧提了出来,因此NSMX项目就这样诞生了。
经过多年的开发,NSMX在已经实现了SMX游戏系统的基础上作出了许多更新,实现了许多SMX没有的功能,并改进了一部分细节问题。下面列举部分主要更新内容:
NSMX在SMX游戏系统的主要更新内容
更新类型 |
更新内容 |
渲染引擎 |
采用DirectX9绘制,大幅度提升了绘图效率和FPS。 |
游戏引擎 |
采用了更高效的数据结构与算法,大大提升了游戏执行效率和FPS。 |
自带游戏 |
加入了自带游戏Mario World Exploration |
贴图 |
支持使用PNG、GIF、BMP、JPG等常见图片文件格式作为贴图,同时支持利用Alpha通道实现透明效果。 |
音频 |
使用SDL2Mixer引擎,支持播放MP3、WAV、OGG、MIDI等常见的音频文件。 |
控制器 |
支持使用手柄作为游戏控制器。 |
程序界面 |
初步修复了高DPI造成的界面混乱的问题。 |
游戏结构 |
- 创作地图时将使用工程作为标准编辑结构。
- 调整了关卡文件的结构。
|
兼容 |
允许读取SMX关卡文件,并自动将SMX图片转换成支持的PNG格式图片,将SMX音频文件转换成支持的MIDI文件。 |
细节 |
增加了更多游戏细节。 |
玩家 |
- 改善了玩家的运动引擎,操作手感更接近于NSMB。(试试就知道了0w0)
- 玩家新增了许多动作:滑坡、抱起东西、进入门、转向等等。
|
游戏GUI |
采用了超级马里奥制造的GUI。 |
客户区 |
现在你可以在你的工程中自定义任意尺寸的游戏窗口,并且可以修改每个关卡的客户区大小。 |
大地图 |
你可以在你的游戏中使用大地图来连接关卡,并且大地图模式提供了许多功能。(这里不列举了QAQ) |
启动器 |
加入了启动器,可选择开始游戏或编辑游戏。 |
编辑器界面 |
采用BYUI进行界面设计。 |
添加对象工具 |
你可以使用画笔、矩形、直线工具来摆放对象。 |
智能调整 |
你可以使用Auto模式进行对象的添加和删除,关卡的对象将会按照事先规定好的方式智能调整。智能调整功能与超级马里奥制造的摆放功能相似,摆放和删除某种类型的地面会智能地修改贴图。 |
翻转 |
你可以对所选对象进行水平或竖直方向的翻转。 |
选择 |
你可以自由地拖出矩形选中单个或多个对象进行编辑操作。 |
剪切板 |
允许对选择的单个或多个对象进行剪切、复制、粘贴操作。 |
方块 |
- 加入了更多的方块,包括新的设施。
- 加入了斜坡。
- 方块将以单独的元素对象出现,结合自动绘制模式可以更轻松地设计地形。
- 加入了独立事件。
|
背景 |
加入了更多背景,包括具有功能的背景。 |
非玩家角色 |
- 加入了更多敌人,提供了更多的可修改属性。
- AI更加智能。
- 加入了移动平台。
- 加入了更多Boss(笨笨、库巴七子)。
- 加入了独立事件。
|
区域事件 |
区域事件现在有更多的触发方式。 |
物理环境 |
物理环境现在以区域的形式存在,包括水域、流沙域和攀爬域。 |
连接 |
加入了连接对象,你可以使用连接对象来实现水管、门等连接。 |
生成器 |
加入了生成器,允许间歇地生成对象。 |
文本框 |
文本框现在进行更多的属性操作,包括选择字体、设置阴影等。 |
图片框 |
图片框支持PNG图片格式。 |
自定义 |
你现在可以自由地在工程中自定义对象,自定义对象共用于整个工程。 |
公共变量 |
你可以使用公共数据和公共开关来进行编程操作。 |
组 |
你可以使用组来批量管理对象,包括管理组的显隐状态和位置等。 |
事件 |
采用了全新的事件结构,你可以使用顺序、条件、循环结构进行十分简单的编程来实现复杂的游戏效果。(这可有的说了=w=这里就不列举了) |
返回目录
0.2 游戏结构
这里将介绍游戏程序的文件以及文件夹的结构。
地图设计者应当了解地图的工程结构。
A.Data文件夹
Data文件夹存放游戏数据文件。
- Data\Temp文件夹:存放编辑地图的临时文件。
- Data\Tools文件夹:存放NSMX的小工具。controller.exe允许修改NSMX的操作方式,smxpic2png.exe允许将某个文件夹下的SMX图片文件(.xpic和.xbgp)转换成NSMX支持的PNG格式。
- Data\Skin文件夹:存放皮肤图片文件。
- Data\Resource文件夹:存放游戏资源文件(勿动)。
- Data\Resource\nsmx\xxx.by文件:游戏配置文件,NSMX将读取配置文件信息来获取相应参数。
- Data\Resource\nsmx\music文件夹:存放游戏自带的音乐文件。
- Data\Resource\nsmx\sound文件夹:存放游戏自带的音效文件。
- Data\Resource\nsmx\graphics文件夹:存放游戏自带的贴图文件,贴图为带透明的PNG格式。
B.Maps文件夹
Maps文件夹存放地图工程文件和地图封装文件。
- Maps\工程名文件夹:存放当前工程的所有相关文件,每一个工程对应一个专用的工程文件夹。
- Maps\工程名\Game.nxproj文件:当前工程的编辑器载入专用文件。
- Maps\工程名\Game.nxgm文件:当前工程的游戏载入专用文件,该文件储存了当前工程的所有文本数据信息,由编辑器的导出游戏功能生成。
- Maps\工程名\Resource文件夹:存放当前工程的所有资源文件,如果你想在工程中添加自定义对象,那么对应的资源文件应置于这个文件夹的相应位置内。
- Maps\工程名\Resource\Music文件夹:存放当前工程自定义音乐的音频文件。
- Maps\工程名\Resource\Sound文件夹:存放当前工程的自定义音效的音频文件。
- Maps\工程名\Resource\graphics\level\block文件夹:存放当前工程关卡自定义方块的图片文件。
- Maps\工程名\Resource\graphics\level\bgo文件夹:存放当前工程关卡自定义背景的图片文件。
- Maps\工程名\Resource\graphics\level\npc文件夹:存放当前工程关卡自定义非玩家角色的图片文件。
- Maps\工程名\Resource\graphics\level\effect文件夹:存放当前工程关卡自定义特效的图片文件。
- Maps\工程名\Resource\graphics\level\bkgrd文件夹:存放当前工程关卡自定义后台背景的图片文件。
- Maps\工程名\Resource\graphics\level\picture文件夹:存放当前工程关卡图片框使用的图片文件。
- Maps\工程名\Resource\graphics\worldmap\tile文件夹:存放当前工程大地图自定义贴图的图片文件。
- Maps\工程名\Resource\graphics\worldmap\scene文件夹:存放当前工程大地图自定义景物的图片文件。
- Maps\工程名\Resource\graphics\worldmap\path文件夹:存放当前工程大地图自定义路径的图片文件。
- Maps\工程名\Resource\graphics\worldmap\maplevel文件夹:存放当前工程大地图自定义关卡的图片文件。
- Maps\工程名\Data文件夹:存放当前工程的数据信息。
- Maps\工程名\Data\Project.by文件:当前工程的工程配置文件。
- Maps\工程名\Data\LevelList.by文件:当前工程的工程关卡列表配置文件。
- Maps\工程名\Data\WorldMap.by文件:当前工程的大地图配置文件。
- Maps\工程名\Data\Level文件夹:存放当前工程的所有关卡文件,NSMX的关卡文件格式为.escn。
- Maps\工程名\Data\Map文件夹:存放当前工程的大地图文件,NSMX的大地图文件格式为.emap。
- Maps\工程名\Data\Custom文件夹:存放当前工程所有自定义对象的配置信息。
注:主游戏程序正常载入游戏必须保证工程文件夹下有Game.nxgm文件和Resource文件夹。
返回目录
1 界面介绍
1.1 启动器界面
- 展示框:展示NSMX介绍页面,你可以在这个页面获取NSMX最新的信息。
- 选择地图:选择一个已经封装好的地图,Mario World Exploration为游戏自带地图。
- 选择存档:选择当前地图的存档,不同的存档储存着你在地图的不同进度。
- 重置:重置当前存档,当前存档数据将会被清空。
- 游玩:载入并开始你选择的地图。
- 创造地图:打开游戏自带的编辑器程序。
- 设置:打开NSMX游戏控制程序。
返回目录
1.2 编辑器界面
游戏编辑器界面主要分为标题栏、菜单栏、顶部工具栏、项目工具栏、对象工具栏、侧边工具栏、编辑区域、测试区域、属性栏、状态栏等多个部分。
你可以通过将鼠标悬停在相应的位置来获得更为详细的信息。
1.2.1 菜单栏
菜单栏提供了基本的操作命令。
文件菜单:
- 新建工程:建立一个新的工程,新工程将会以文件夹的形式创建在Maps文件夹内。
- 打开工程:打开一个工程,你需要在一个工程文件夹中读取.nxproj文件。
- 保存工程:保存当前编辑的工程数据到工程文件夹内。
- 关闭工程:关闭当前编辑的工程。
- 导入SMX关卡文件:读取一个或多个SMX关卡文件(.xescn格式)并加入到当前工程中。
- 导出游戏数据:将当前工程封装成完整的地图,并将封装内容保存到生成在工程文件夹下的Game.nxgm文件中。
- 退出 New Super Mario X:退出游戏编辑器。
编辑菜单:
- 剪切:将当前选中的对象移动到剪切板中。
- 复制:将当前选中的对象复制到剪切板中。
- 粘贴:将剪切板中的对象粘贴到当前编辑场景中。
- 删除:将当前选中的对象删除。
- 置于最前:将当前选中的对象的移动到所有对象之前。
- 置于最后:将当前选中的对象的移动到所有对象之后。
- 显示网格:决定编辑区域是否显示网格。
- 自动对齐网格:决定移动对象时是否对齐到网格。
- 移动到场景左上角:将当前摄像机坐标调整到场景左上角。
- 移动到场景左下角:将当前摄像机坐标调整到场景左下角。
- 寻找起始点:将当前摄像机坐标调整到以起始点为中心。
- 寻找重生点:将当前摄像机坐标调整到以最近的重生点为中心。
视图菜单:
- 项目工具栏:将左侧工具栏切换为项目工具栏。
- 对象工具栏:将左侧工具栏切换为对象工具栏。
- 公共开关:打开公共开关管理窗口。
- 公共数值:打开公共数值管理窗口。
- 公共分组:打开公共分组管理窗口。
- 公共事件:打开公共事件编辑窗口。
- 音效/音乐/大背景/特效数据库:打开对应元素的数据库窗口。
关卡/世界地图菜单:
- 切换场景:切换当前编辑的场景。
- 场景设置:在属性栏中对当前编辑的场景进行设置。
运行菜单:
- 测试当前关卡或地图:对当前关卡或者地图进行测试。
- 测试整个工程:将当前工程进行封装并测试。
- 终止测试:停止当前测试进程。
- 显示FPS:在测试与编辑窗口左上角显示FPS。(FPS表示每秒帧数,NSMX默认开启垂直同步,最佳FPS为61)
工具菜单:
- 对象数目统计:统计当前关卡或者地图各种对象类型的数目并显示利用率。
- 游戏控制器:打开游戏控制器工具并设置键盘和手柄的操作方式。
- SMX图片转换器:打开SMX图片转换器工具并将给定文件夹下的SMX图片转换为PNG格式图片。
帮助菜单:
1.2.2 顶部工具栏
顶部工具栏提供对于常用命令的快速访问。
返回目录
1.2.3 侧边工具栏
侧边工具栏提供了多种便捷的编辑工具。
- 蘑菇:卖萌专用0w0。
- 鼠标操作:单击并拖动可选中单个或多个对象进行操作。
- 自由移动:单击编辑窗口并拖动来移动窗口内容。
- 画笔绘制:将选择的对象按照鼠标移动轨迹绘制。
- 矩形绘制:将选择的对象按照鼠标拖出的矩形样式绘制。
- 线段绘制:将选择的对象按照鼠标拖出的线段样式绘制。
- 自动绘制:将选择的对象按照事先约定好的方式自动调整以适应贴图。(默认开启)
- 水平翻转:将选中区域的所有对象进行水平翻转。
- 竖直翻转:将选中区域的所有对象进行竖直翻转。
返回目录
1.2.4 项目工具栏
项目工具栏用于管理当前地图工程的的整体信息。
项目工具栏基本结构为:工程名称+大地图+关卡。第一行粗体显示为工程名称,你可以右键对工程进行编辑操作。有[地图]标识的项为大地图,其他均为关卡。整个工程执行顺序按照列表顺序执行。
你可以通过拉伸工具栏的边框来调整尺寸。
返回目录
1.2.5 对象工具栏
对象工具栏提供了更加便捷的方式选取对象。
你可以在类型下拉框中选择对象类型,并在风格和分类下拉框中快速寻找到所需要选择的对象。
你可以通过拉伸工具栏的边框来调整尺寸。
返回目录
1.2.6 属性栏
属性栏展示选中对象的属性,部分属性只读。
属性栏分为两列,左边一列为属性名称,右边一列为属性值,你可以点击左边的+-号展开或收起属性分组。
你可以将鼠标悬停在某一行来获取该属性的详细介绍。
你可以通过拉伸属性栏的边框来调整尺寸。
返回目录
1.2.7 编辑区域
编辑区域是编辑器的主要区域,你可以在编辑区域内设计自己的关卡和大地图。
编辑区域有两种模式:全屏模式和窗口模式,默认为全屏模式。你可以通过点击编辑区域窗口右上角的最大化/还原按钮来切换窗口模式。
返回目录
1.2.8 测试区域
测试区域采用窗口模式,用来测试关卡和大地图。
返回目录
1.3 主游戏界面
施工中……
返回目录
2 开始工作
对于第一次接触NSMX的你,是不是充满着创作游戏的热情,想很快地学会使用这个游戏编辑器呢?请仔细阅读这份指南,接下来将手把手教你如何搭建属于你的游戏世界。
贴心小贴士:
摄像机(Camera):表示游戏显示屏幕在整个关卡区域的相对位置。
NSMX使用的单位一览:
NSMX的长度单位为像素(Pixel),是计算机成像的一种单位,一个像素是贴图点阵的一个点,多个表示颜色的点集中在一起便构成了贴图。NSMX的参考网格的一个单元格的尺寸为32像素x32像素,绝大多数方块的尺寸也为32像素x32像素,因此我们常说的一格代表的长度就是32像素。
NSMX的时间单位为帧(Frame),一帧表示游戏的一个刷新周期。由于开启了垂直同步,NSMX在理想状态下一秒稳定地刷新61次,即FPS(每秒传输帧数,Frames Per Second)为61。FPS可以作为游戏运行流畅程度的参考依据。
NSMX的速度单位为像素/帧(P/F),表示对象在一个刷新周期内移动的距离。比如我们熟知的板栗仔移动速度就为1.0P/F,根据物理公式可知板栗仔一秒钟可以行走61像素,接近两格的长度。
NSMX的加速度单位为像素/平方帧(P/F^2),表示对象在一个刷新周期内速度改变的多少。NSMX的重力加速度通常为0.3P/F^2。
NSMX使用的坐标轴:
- 在NSMX坐标系中,右边表示X轴正向,下边表示Y轴正向。
- X速度为正数表示速度向右,为负数则表示速度向左。
- Y速度为正数表示速度向下,为负数则表示速度向上。
2.1 工程的新建、命名、保存与设置
打开NSMX游戏编辑器后,第一步是新建工程。在菜单栏中点击文件→新建工程或者直接点击工具栏的新建按钮,弹出新建工程的对话框,这时候你可以为你的工程起一个名称,这个名称就是你的地图名称。
点击确定,你的工程就创建好啦(′▽`〃),你的专属工程文件夹已经在Maps文件夹内创建成功。
如果你想重新命名,可以在项目工具栏中右键第一行的工程项,选择重命名,在重命名工程对话框中修改名称。
工程名称命名最好是能代表创作作品的名称,尽可能避免起“喝了”、“嘻嘻”、“哈哈”、“啊啊”等容易让人混淆的名称。
在进行游戏编辑的时候,你最好定期保存工程文件以免游戏丢失。(随手保存是个好习惯●▽●)保存工程有4种方式:
- 点击工具栏的保存按钮。
- 文件菜单→保存工程。
- 在项目工具栏中第一行右键选择保存工程。
- 使用快捷键Ctrl+S。
这时你可以修改工程的属性(也可以不修改使用默认参数),项目工具栏中第一行右键选择工程属性,弹出工程属性窗口:
Name不必多说……就是工程名称,你也可以在这里修改工程名称。
WindowWidth和WindowHeight属性表示游戏界面的窗口宽度和高度,以像素为单位,NSMX默认使用800×576这个窗口尺寸。你可以修改这两个属性值来自定义你的窗口大小。
也就是说,你可以自定义你的工程游戏窗口大小,你可以改成这样的大窗口:
也可以改成这样:
下面提供一些游戏窗口尺寸的参考数据:
- SMX窗口尺寸:544×512
- SMM(超级马里奥制造)窗口尺寸:768×448
- SMBX(超级马里奥兄弟X)窗口尺寸:800×600
- MF(永远的玛丽)窗口尺寸:640×480
注:游戏窗口大小最小值为SMX的窗口尺寸。
返回目录
2.2 新建关卡和大地图
创建了一个工程之后,你现在可以在你的工程中新建关卡和地图了。
在项目工具栏的第一行右键,选择创建关卡,弹出新建关卡的对话框,这时候输入关卡名称点击确定就可以创建一个关卡了。
如果你想让你的工程拥有大地图模式,你可以新建一个大地图。在项目工具栏第一行右键,选择创建大地图,在弹出的对话框中输入大地图名称并点击确定即可。
工程的游戏模式有两种,一种是关卡关联模式,一种是大地图关联模式。如果你的工程中有大地图,那么游戏将会执行大地图关联模式,否则执行关卡关联模式。
关卡关联模式是游戏按关卡列表的先后顺序依次读取关卡,关卡完成后会载入下一个关卡,关卡失败则会重新载入当前的关卡。你可以通过右击关卡选择上移或者下移来调整关卡的先后顺序,通过克隆关卡来获得当前关卡的新的副本,还可以通过连接(warp)来实现关卡的跳转分支。SMX和MF常使用这种游戏模式,这种模式下玩家通常不能回到已经通过的关卡。
大地图关联模式是游戏通过大地图跟关卡进行更为复杂和直观化的关联。玩家可以在大地图已经开启的路径中自由移动选择关卡,同时可以在大地图中进行跳转。
返回目录
2.3 导入SMX关卡
如果你是一位SMX设计师并且想把在SMX设计的关卡导入到NSMX中,请仔细阅读这个章节。
下面以导入第三届PK!SMX的一个决赛地图为例:
文件菜单→导入SMX关卡文件或者点击工具栏上的导入SMX关卡文件按钮,弹出导入文件对话框,找到你需要导入的.xescn文件,点击打开。
如果你的.xescn文件所在文件夹存在着未转换为PNG格式的SMX图片文件(.xpic和.xbgp文件),将会弹出下面的窗口。你需要将这些SMX图片文件转换为PNG格式才能正常导入关卡文件,点击确定开始转换。
转换的时候会弹出自带的SMX图形文件转换工具,请等待所有的图形文件转换完成即可。转换完成后的PNG文件会保存在相同的文件夹内。
转换完成之后,重新导入SMX关卡文件,导入完成后,你的项目工具栏将会多出你所导入的SMX关卡,点进去看看吧0w0
返回目录
3 关卡编辑
关卡是整个游戏的核心,你可以像使用超级马里奥制造一样,利用以下的关卡编辑技巧自由地创造属于你的关卡。
3.1 关卡设置
你可以对你的关卡的属性进行设置。(也可以不进行设置使用默认参数)
在项目工具栏内对你的关卡右键,选择关卡属性,弹出关卡属性对话框。
你会看到两个属性:ClientWidth和ClientHeight,它们表示游戏界面的客户区宽度和高度,默认值为0。如果属性值为0,那么将自动地采用窗口宽度和窗口高度,也就是客户区的尺寸就是窗口尺寸。如果输入一个具体的大于零数值,那么客户区宽度和高度将采用这个数值。
什么客户区呢?关卡客户区是关卡在窗口内的显示区域,窗口的非显示区域将用纯色填充。比如导入SMX关卡的客户区默认设置为544×512,那么在默认大小的窗口下(800×576)游戏看起来会是这样的:
返回目录
3.2 场景设置
什么是场景?
场景(Sections)是一个关卡或者大地图的一个单独的区域,游戏时摄像机会限制在场景之内。每个场景都可以设置不同的后台背景图片和背景音乐。每个关卡或者大地图都拥有21个场景,你可以使用连接来在同一个关卡内跳转到另外一个场景。
选择当前场景有两种方法,你可以在关卡菜单→切换场景中选择场景:
也可以在工具栏的下拉选择框中选择场景:
鼠标模式下点击场景的空白处,属性栏会列出场景的属性,你可以将鼠标悬停在对象属性项上以获取详细信息。
场景的名称和场景的短名称(场景名缩写):你可以设定当前场景的专有名称。
场景顶端/底端/左端/右端:表示场景的四个边界与原点的水平或竖直的距离。
修改场景大小:在修改场景大小的属性项中点击按钮,进入场景调整模式。
此时场景边框开始闪烁,你需要左键单击需要修改的边框,在合适的位置再次单击以改变边框的位置,鼠标右键退出调整模式完成调整。
后台背景音乐:点击属性值弹出选择背景音乐的下拉框,你可以选择一首合适的音乐曲目作为场景的背景音乐。下拉框提供了搜索功能,可以快速地提供符合搜索条件的所有音乐。
后台背景图片:点击属性值弹出选择背景图片的下拉框,你可以选择一张背景图片作为场景的后台背景。搜索功能同上。
允许左右相通:是否允许玩家和NPC在场景的一侧进入后从另一侧出来。
离开屏幕退出:玩家是否可以离开屏幕完成关卡。
不允许掉头:场景内的摄像机是否不允许往左移动。
水下:该场景是否都是水域。
返回目录
3.3 功能介绍
接下来将一一介绍NSMX的几个强大的编辑功能。
3.3.1 编辑区域的移动
编辑区域的移动即改变摄像机的位置,有下面三种方法:
1、通过拖动编辑窗口右侧和下侧的滚动条来移动摄像机。
2、按住键盘的上下左右键来移动摄像机,同时按住Shift键来进行更快的移动。
3、通过点击自由移动按钮开启自由移动模式,你可以使用鼠标来拖拽编辑区域来移动摄像机。
返回目录
3.3.2 对象的绘制
对象绘制是将在对象工具栏选中的对象添加到编辑区域内。NSMX为对象绘制提供了多种实用的工具,包括画笔、矩形、线段3种绘制方式。你可以在侧边工具栏选择绘制模式。
画笔绘制:
画笔绘制即按照鼠标移动轨迹来将对象绘制到编辑区域内。
矩形绘制:
矩形绘制即按照鼠标拖动出来的矩形平铺到编辑区域内,该绘制模式提供了更加快捷的方式来绘制重复的对象。
在关卡编辑模式下,矩形绘制只对方块和背景的绘制有效。
线段绘制:
线段绘制即按照鼠标点击和松开而形成的一个线段来将对象绘制到编辑区域内,这个模式更适合水平、竖直或者对角绘制。
在关卡编辑模式下,线段绘制只对方块和背景的绘制有效。
自动绘制:
想像超级马里奥制造那样轻松地摆放地形?使用智能的自动绘制功能吧!0w0
自动绘制即按照事先约定好的方式自动调整以适应贴图,绘制和删除时编辑器都会智能地调整地形。
不使用自动绘制:
使用自动绘制:
自动绘制对斜坡同样有效:
自动绘制模式下的删除操作:
自动绘制模式默认启动时开启,你可以通过再次点击自动模式按钮来取消/启动该模式。
返回目录
3.3.3 对象的选中与拖动
在鼠标模式下,你可以拖出方框来选中对象,并且可以用鼠标拖动选中的对象。
对象被选中后使用不同的颜色效果和文字信息来标注所在分组。
返回目录
3.3.4 对象的剪切、复制和粘贴
如果你在设计关卡时需要重复摆放相同的地形或者结构又懒得一个个重新摆,怎么办?
当然是使用剪切板啦!_(:з」∠)_
选中对象之后,你可以对它们进行与剪切板有关的剪切、复制和粘贴操作。熟悉这些剪切板的操作技巧将大幅度提高你的创作效率。利用复制+粘贴可以快速地添加重复的对象组合。
剪切板(Clipboard):剪切板是编辑器内置的储存结构,储存着单个或者多个对象的属性信息和相对位置信息。
剪切(Cut):将当前选中的所有对象移动到剪切板中。
剪切的四种操作方式:
- 点击工具栏的剪切按钮
- 使用快捷键Ctrl+X
- 对选中对象右键选择剪切选项
- 编辑菜单→剪切
复制(Copy):将当前选中的所有对象创建一份拷贝并把这份拷贝数据覆盖到剪切板中。
复制的四种操作方式:
- 点击工具栏的复制按钮
- 使用快捷键Ctrl+C
- 对选中对象右键选择复制选项
- 编辑菜单→复制
粘贴(Paste):将剪切板的所有对象创建一份拷贝并移动到当前编辑区域的左上角。
粘贴的四种操作方式:
- 点击工具栏的粘贴按钮
- 使用快捷键Ctrl+V
- 在编辑区域右键选择粘贴选项
- 编辑菜单→粘贴
返回目录
3.3.5 对象的删除
不小心摆错了怎么办?QAQ
你可以通过使用Del键或者对选中对象右键选择删除选项,将选中的对象删除。
返回目录
3.3.6 对象的置前和置后
设计关卡时发现对象的堆叠顺序不对,怎么办?TAT
你可以通过置前(Bring to front)和置后(Bring to back)操作调整选中对象在所有对象的次序。
置前和置后的三种操作方式:
- 点击工具栏的置前/置后按钮
- 在选中的对象中右键选择置前/置后选项
- 编辑菜单→置于最前/置于最后
置前效果:
置后效果:
返回目录
3.3.7 对象的水平翻转和竖直翻转
如果你想实现一个对称的关卡设计,你可以使用翻转功能来实现。编辑器提供了水平翻转(Flip Horizontal)和竖直翻转(Filp Vertical)两种翻转方式,可以智能地将需要的所有对象进行翻转处理。
点击工具栏的水平翻转或竖直翻转按钮,在编辑区域按住鼠标左键拖出矩形将需要翻转的区域覆盖,松开鼠标左键后即可进行水平或竖直方向的翻转处理。
返回目录
3.3.8 对象属性的读取
想要读取一个对象属性,只需要用鼠标模式点击一下对应的对象即可,属性栏将会列出这个对象的所有可查看的属性信息,你可以在属性栏中修改对象的属性值。
返回目录
3.4 起始点和重生点
起始点(Start Point)是马里奥的初始位置,玩家在未接触检查点前总是在当前关卡的该点开始。重生点(Restart Point)是玩家接触了检查点(Check Point)并且死亡之后重新进入关卡的位置。一个关卡必须有一个起始点,可以没有或者拥有多个重生点。
设置起始点:点击工具栏的起始点按钮,在编辑区域合适位置放置起始点即可。
设置重生点:点击工具栏的重生点按钮,在编辑区域合适位置放置重生点即可。
检查点:若玩家接触到检查点后死亡,将从离该检查点最近的重生点重新开始。检查点有多种方式,一种是使用检查点区域,另一种是使用检查点NPC。检查点区域的放置只需要点击工具栏上的检查点按钮,在编辑区域拖出一个合适的矩形区域即可,整个区域即玩家的检查点区域。检查点NPC需要在NPC对象中选择检查点,并放置在编辑区域内。下图是两种检查点的参考摆放方式。
返回目录
3.5 关卡对象
下面一一介绍关卡的每种类型对象。
3.5.1 方块
方块(Blocks)是具有形状和大小的实体对象,可以在关卡内组成各种各样的地形、平台和设施。方块可以与玩家和非玩家角色(NPC)交互以限制其运动。一些功能型方块跟玩家交互也会产生不同的效果,下面介绍NSMX的几种方块类型。
A.普通方块包含了地面方块和其他的大部分方块,这种的方块为实心的矩形方块,玩家和NPC不能从上下左右四个方块通过该类型的方块。
B.平台(Platforms)为空心的矩形方块,玩家和NPC能在下面和两侧穿过该方块,而上方则不能穿过。
C.斜坡(Slopes)为实心的直角三角形方块,玩家和NPC不能在斜坡的三个面穿过方块,玩家可以站在斜坡面按下键来进行滑坡的动作。
D.可修改尺寸的方块(Sizable Blocks)为实心或者空心的矩形方块,摆放时需要拖出个矩形来确定该方块的尺寸。
E.功能型方块(Functional Blocks)为实心或者空心的矩形方块,这种方块可以跟玩家进行交互,根据不同的算法实现不同的效果。
下面介绍几种常见的功能型方块:
- 问号砖:玩家可以在问号砖中顶出物品和金币。
- 金砖:如果金砖没有内容物,大马里奥可以将其顶碎,小马里奥则不行。
- 信息砖:通常用来显示信息或者作为开关使用。(需使用独立事件)
- 弹力方块:白色弹力方块可以让马里奥跳得比普通跳跃高,黄色弹力方块则让马里奥跳得更高,蓝色弹力方块可以使马里奥在侧面反弹。
- 炮台:周期性地发射炮弹等NPC。
- 刺:玩家接触到刺的某个面会受伤。
- 岩浆:玩家和NPC接触到会直接死亡。
方块的属性包括通用属性、特殊属性和独立事件属性(独立事件属性在事件的章节中介绍)等,下面先介绍通用属性。
- 名称:返回对象的名称。
- 索引:返回对象在所有同类对象中的绘图顺序标号。
- 组别:返回对象所属的组。(组的概念在组的章节中介绍)
- X/Y:返回对象的横坐标/纵坐标的值。
- 宽度/高度:返回对象的尺寸信息。
- 隐藏:决定对象是否隐藏。如果方块可顶,那么玩家可以从方块下方将方块顶出并显示出来。
- 坚硬度:决定对象是否坚硬(不可顶)。当对象拥有内容物时,坚硬则表示永远不可顶。
- 静态显示:决定对象是否取消动画效果。
- 初始金币数:决定对象包含的金币数。如果对象拥有内容物,则必须将对象包含的所有金币顶出才能顶出内容物。
- 内容物:决定对象内置的内容物。你可以在弹出的窗口中选择一个NPC作为内容物。
- 预设顶出模式:决定对象的内容物是否按照预设顶出。预设模式即:如果马里奥为小马里奥,那么顶一个含有火力花的方块只会顶出蘑菇,其他物品类似。
- 可顶次数:决定对象连续的可顶次数。若设为-1,表示可无限顶。每次顶方块之后内置的内容物和金币将会重置直到用完可顶机会。信息方块的该属性值设置为-1可以让马里奥无限次顶该方块。
下面分类介绍特殊属性:
炮台/倒置炮台/斜角炮台是一种周期性地发射NPC内容物的功能型方块,其特殊属性如下:
- 发射内容物条件:智能选项表示如果玩家靠近炮台,炮台将不会发射内容物。SMX选项表示发射内容物条件将与玩家位置无关。
- 发射内容物周期:决定间隔多次时间发射一次内容物。初始值为180帧,约为3秒发射一次。
- 横向/纵向发射速度:决定炮台发射内容物的横向/纵向速度。
伸缩方块是一种可伸缩的功能型方块,被顶后可向上延伸,一段时间后缩回。
- 最大伸长量:决定对象顶起后最多向上延伸的格数。
- 伸长时间:决定对象保持伸长状态的时间,每次被顶则重新计时。
返回目录
3.5.2 背景
背景(Background Objects,简称BGO)是一种虚体对象,可为关卡进行装饰,提高关卡的观感性和美观度。同时一部分背景拥有独有的功能类型,下面介绍几种不同的背景。
A.普通背景是最为常见的背景类型,作用为装饰关卡。
B.流体背景(Liquid BGOs)是水/流沙/岩浆专用背景,你可以覆盖相应的环境来实现流体效果。
C.门背景(Door BGOs)是使用门的连接对象时覆盖的功能型背景,当玩家在门的连接对象中进入或出来时将自动播放门打开或关闭的动画。
D.路径控制背景(Path Control BGOs)是控制平台移动的功能型背景,包括路径(Paths)和反向器(Reversers)两种类型。路径类型的背景即线段,你可以使用线段来控制移动平台的路径。反向器类型的背景即控制开关,如果移动平台接触到该背景将会反向移动。如下是路径控制背景的参考摆放方式:
背景的属性为通用属性,包括基本信息、位置和尺寸三部分,内容与方块相同。
返回目录
3.5.3 非玩家角色
非玩家角色(Non-playable characters,简称NPC)是非玩家操控的角色对象,也是整个游戏最具有互动性的关键元素。NPC有着丰富多样的种类,包括敌人类型、物品类型、设施类型等。每个NPC由人工智能(AI)操纵,按照内置的AI算法与玩家或者其他NPC交互。
NPC的属性包括通用属性、特殊属性和独立事件属性。
NPC的通用属性包括基本信息、位置、尺寸和朝向四部分,你可以在朝向属性项中设置NPC初始朝向(左或右)。
下面介绍几十种NPC的AI和对应的特殊属性。
A.板栗仔、啪啦龟等
这类NPC使用最基本的AI,板栗仔只会朝一个方向走动直到碰到墙或者其他NPC,而红色啪啦龟则会在悬崖边智能地转向。啪啦龟被马里奥踩中之后会变成可抱起的龟壳,玩家可以将抱起龟壳或者踢出来砸死其他NPC。硬壳龟免疫马里奥的火球,马里奥踩到刺猬龟则会受伤。对于新型的友好型NPC——企鹅,玩家碰到企鹅将会被弹飞。
B.飞行板栗仔、飞行啪啦龟等
这类NPC可以左右/上下飞行,可以跳跃前进,也可以一边飞行一边跟踪玩家。被玩家踩中一次后会丢失翅膀从而丧失飞行能力。
在编辑区域内放置NPC时,如果直接放置,NPC默认采取跳跃的运动方式。如果使用鼠标拖动放置,可以将其运动方式默认设置为左右/上下飞行,NPC的飞行轨迹使用箭头表示。
这类NPC的特殊属性如下:
- 运动方式:你可以设置NPC的运动方式为左右飞行、上下飞行、跳跃或者跟踪。
- 横向/纵向移动最大值:如果NPC的运动方式为左右/上下飞行,决定NPC左右/上下飞行的最大距离(格数)。
C 噗咕鱼
噗咕鱼类型的NPC有游泳和飞行两种运动方式,飞行运动模式的噗咕鱼会在屏幕的右下角腾跃而起扑向玩家。
噗咕鱼的特殊属性如下:
- 运动方式:你可以设置噗咕鱼的运动方式为游泳或者飞行。
D.快乐云
快乐云通常出现在一个较高的地方,会周期性地抛掷对象。快乐云往往会抛掷红色刺球或者绿色刺球,你可以通过设定抛掷对象来让快乐云抛掷其他NPC。
快乐云的特殊属性如下:
- 精准抛掷:快乐云是否在玩家头顶上方的附近才抛掷NPC对象。
- 抛掷周期:决定快乐云抛掷一次间隔的时间长度,以帧为单位。
- 抛掷对象:决定快乐云抛掷的NPC对象。
E.炮弹
炮弹通常是炮台发射的对象,会无视地形水平地飞行。炮弹有小炮弹和大炮弹两种,大炮弹体型更加巨大从而产生威慑感(误)。
炮弹的特殊属性如下:
F.大笨石
大笨石通常出现在城堡内,如果玩家靠近,大笨石会迅速地下落试图砸中玩家。大笨石有几种运动方式:智能下落、按路线竖直/水平移动。大笨石的智能下落方式即在大笨石下落过程中会保持下落状态直到接触到地面上。大笨石按路径竖直移动即大笨石按照设定好的路径下落和上升,按路径水平移动即按照路径左移和右移。
在编辑区域内直接放置大笨石,默认采用智能下落的方式。而如果拖动放置大笨石,则会采用按路径移动的方式,如下图:
大笨石的特殊属性如下:
- 即时下落:决定大笨石下落的条件是否无视玩家位置,即不管玩家是否靠近,大笨石都会下落。
- 运动方式:你可以选择智能下落、按路径水平或者竖直移动几种运动方式。
- 横向移动最大值:如果大笨石的运动方式为按路径水平移动,决定大笨石左右移动的最大距离(格数)。
- 纵向移动最大值:如果大笨石的运动方式为按路径竖直移动,决定大笨石上下移动的最大距离(格数)。
- 下落速度:决定大笨石下落时的纵向速度。
- 上升速度:决定大笨石上升时的纵向速度。
- 水平移动速度:决定大笨石左右移动时的水平速度。
G.布布鬼
当你背朝布布鬼时,布布鬼慢慢地靠近你,而你面朝布布鬼时,布布鬼则会停下来。
H.岩浆球
岩浆球通常从岩浆之中周期性地跳跃出来并返回。岩浆球有跳跃和上下飞行两种类型的运动方式,跳跃方式下的岩浆球会隐藏在岩浆层的内部,周期性地从岩浆中跳出并落回。上下飞行方式下的岩浆球则会在给定的路径下上下来回飞行。
在编辑区域内直接放置岩浆球,默认采用跳跃的方式。而如果拖动放置岩浆球,则会采用上下飞行的方式,如下图:
岩浆球的特殊属性如下:
- 运动方式:你可以选择跳跃或者上下飞行两种运动方式。
- 纵向移动最大值:如果岩浆球的运动方式为上下飞行,决定岩浆球在纵轴飞行的最大距离(格数)。
I.食人花
食人花是一类在水管口处伸缩的NPC,玩家被食人花咬到的话会受伤。食人花有绿色食人花、红色食人花和跟踪食人花三种类型,绿色食人花通常会在水管处伸缩试图去咬玩家,红色食人花则会在伸出水管后向上喷出火球,跟踪食人花也会在伸出水管之后会智能地朝玩家喷射跟踪火球。(你可以在属性种修改这些默认特性)
食人花的特殊属性如下:
- 伸出速度:决定食人花伸出水管的移动速度。
- 缩回速度:决定食人花缩回水管的移动速度。
- 隐藏时间:决定食人花完全缩回水管之后的等待时间。
- 停留时间:决定食人花完全伸出水管之后的停留时间。
- 出现条件:如果出现条件为智能,那么纵向的食人花在玩家靠近时将不会伸出,这是降低难度的方法之一。如果出现条件为SMX,那么食人花将无视玩家位置直接伸出。
- 抛掷对象:决定食人花在完全伸出水管之后抛掷的NPC对象,红色/绿色食人花会在嘴巴的方向抛掷NPC,而跟踪食人花则会朝着玩家抛掷NPC。
- 抛掷对象数目:决定食人花在一个伸缩周期内抛掷对象的总数,最大值为20。
J.旋转光球
旋转光球是根据数学模型移动的NPC,给定圆心、半径和初始角度,旋转光球会按照不同的数学公式进行运动。
旋转光球的圆心、半径和初始角度的设置方式如下:(你可以通过再次移动光球修改位置)
旋转光球的特殊属性如下:
- 运动方式:决定旋转光球的运动方式,包括:圆周线、星形线、心型线和两种玫瑰线。(你可以百度一下看看这几种线的运动轨迹)
- 旋转方向:决定旋转光球是按顺时针旋转还是按逆时针旋转。
- 角速度:决定旋转光球每帧旋转的度数,其速度单位为度/帧。
K.平台
平台分为两种类型,一种是掉落平台,另一种是移动平台。先介绍掉落平台。
掉落平台:
玩家站在掉落平台上时掉落平台会由于承受玩家的重力而左右晃动,超过平衡时间后则会下落。你可以在其特殊属性设置平衡时间。
移动平台:
移动平台是一种重要的平台类型,未激活的移动平台会处于悬空的“待机”状态,当玩家站在移动平台上方时移动平台将会激活。激活的移动平台在没有路径控制背景的情况下会自由下落,而接触到路径控制背景的移动平台则会按照路径移动,遇到反向器则变换方向。你可以在其特殊属性内设置移动平台的初始激活状态。
L.出口
NSMX为NPC提供了几种出口方式:超级马里奥兄弟3的通关卡牌、魔力球,超级马里奥兄弟1的旗子,超级马里奥世界的通关器。你可以参考上图的样式来为你的关卡设置通关方式。
M.按钮
玩家踩下P按钮可以触发相应的操作。P按钮有两种执行方式:一种是无功能,这种方式适合结合事件处理。一种是金币和金砖的互相转换,当P按钮被踩下时,关卡内所有金币将会转变成金砖,所有无内容物的金砖也会转变为金币。具体实现方式可参考事件实例。
旋转光球的特殊属性如下:
- 开关功能:决定P按钮被踩下后执行的功能,包括无功能和金币金砖的转换。
N.爬墙刺猬
爬墙刺猬可以沿着墙壁边缘爬动。
O.骷髅龟
骷髅龟通常出现在城堡内,当骷髅龟被踩后会变成散落的骨架,一段时间后骨架会重新恢复变回骷髅龟的形态。骷髅龟跟红色啪啦龟一样懂得在转弯处转弯,或许是红啪啦龟变来的?(~ ̄▽ ̄~)
P.飞行甲壳龟
飞行甲壳龟是一种会飞行的NPC,飞行时无视地形。当玩家站在飞行甲壳龟上方时,飞行甲壳龟会承受不住玩家的重力而缓慢地下降,玩家离开后飞行甲壳龟会慢慢飞回原来的高度。
Q.链球狗
链球狗被铁链固定在某个位置,当玩家出现时链球狗尝试朝着玩家的方向扑去直到被铁链约束。
R.锤子龟和火球龟
锤子龟和火球龟是库巴军团的“特种兵”,它们会周期性地朝玩家抛掷锤子或者火球,你可以在属性项中修改它们所抛掷的NPC对象。
锤子龟和火球龟的特殊属性如下:
- 抛掷周期:决定锤子龟和火球龟抛掷NPC对象的平均间隔周期,抛掷时长的计算会相对具有随机性。
- 抛掷对象:决定锤子龟和火球龟抛掷的NPC对象。
S.库巴
库巴是马里奥的最终宿敌,通常作为最终BOSS出现。(在SMX中由于BOSS只有库巴,所以许多SMX作品的很多城堡都会出现库巴= =)库巴有着超强的能力属性,通常HP比较高。库巴会对马里奥喷火,一段时间后腾空而起朝马里奥砸去。库巴在下落时可以将一部分方块砸碎,在超级马里奥兄弟三代中最终BOSS的设计则是让库巴砸烂地面从而掉下悬崖死亡,你可以参考这种方式来设计BOSS战。
T.笨笨
笨笨通常作为小城堡的BOSS出现。笨笨会挥舞着手臂朝玩家冲过来,被踩一次或者过一段时间则会缩成刺壳的形态,之后再次跳起继续横冲乱撞。笨笨有着普通运动、跳得更高、飞行、加速四种运动方式。笨笨在飞行的运动方式下会长着翅膀在城堡内飞行跟踪玩家,而在加速运动方式下笨笨每被踩一次移动速度都会变得更快。你可以通过修改笨笨特殊属性中的运动方式来控制BOSS战的难度。
U.库巴七子
施工中……
返回目录
3.5.4 物理环境
物理环境(Physical Environment)是一类对玩家产生环境影响的对象,这类对象在所包含的矩形区域内定义了各种类型的物理环境。物理环境目前包括水域、流沙域和攀爬域,你可以通过事件区域来实现具有其他效果的物理环境。
水域:
水域是可游泳的物理环境对象,通常在岛屿关卡中使用。你可以将水域覆盖在水的背景上,实现在水中游泳的效果。
流沙域:
流沙域是使玩家缓慢下沉的物理环境对象,通常在沙漠关卡中使用。你可以将流沙域覆盖在流沙背景之上,让流沙产生缓慢下沉的效果。
攀爬域:
攀爬域是可以让玩家攀爬的区域,你可以覆盖在藤蔓上做出可攀爬藤蔓的效果。
如何摆放物理环境区域呢?你需要在工具栏中点击对应的物理区域:
绘制模式下,在编辑区域内拖出一个合适的矩形,松开鼠标左键完成物理环境的摆放。以下是三种物理环境的参考摆放方式:
蓝色矩形区域表示水域,黄色矩形区域表示流沙域,绿色矩形区域表示攀爬域。
返回目录
3.5.5 生成器
生成器(Generator)是一种区域对象类型,当生成器间隔已满一个周期且区域覆盖的范围内无任何对象遮挡时生成一个NPC。生成器有三种生成NPC的方式,分别是从接触面出来、喷射生成和瞬间生成。
从接触面出来:
喷射生成:
瞬间生成:
如何摆放并设置生成器呢?
点击上图的生成器按钮,在编辑区域合适的位置拖出一个矩形区域,松开鼠标左键创建一个生成器。
下面介绍生成器的生成属性。
- 生成对象:决定生成器的生成NPC对象。
- 对象朝向:决定生成器所生成的NPC对象的初始朝向。
- 生成方式:决定生成器生成NPC的方式,你可以选择从接触面出来、喷射生成或者瞬间生成。
- 生成方向:决定生成器朝着哪个方向生成NPC。
- 生成间隔:决定生成器生成NPC的间隔周期,以帧为单位。
- 生成器喷射力:如果生成器使用喷射生成的生成方式,决定喷射NPC时的初速度。
返回目录
3.5.6 连接
连接(Warp)是一种特殊的对象,可以将玩家从一个位置传送到另一个位置。玩家可以在同个场景内传送,也可以在不同的场景之间传送。如果你的关卡有多个场景,你需要使用连接使得玩家能够到达其他场景。
摆放连接对象的方法:点击工具栏上的连接按钮,在绘制模式下在编辑区域内拖出一个矩形,松开鼠标左键创建一个连接对象。
连接标号:连接标号为一对连接的表示数字,当玩家进入连接的入口时,将会从与该入口连接标号相同的出口出来(比如进入标号为38的入口,将从标号为38的出口出来)。为了防止连接混淆,一个出口应只使用一个标号,而入口可以使用同一个标号,表示多个入口进入从同一个出口出来。
入口/出口:入口和出口是多对一的对应关系,同一个入口和出口的传送方式应相同。进入入口后将按照上述连接标号的秒速从出口出来。在编辑区域内入口为黄色字体标号,出口为白色字体标号。
连接有三种传送方式:水管、门和瞬移,三种传送方式有着不同的传送动画和传送效果。
水管连接是使用最多的一种传送方式,当玩家在连接的边框处按住对应方向键时将会进入水管传送方式。水管连接需要规定入口、出口以及连接方向。下面是参考摆放方式。
传送效果如下:
如果你的连接对象喷射力大于0,那么玩家在水管出口处将会被喷射出来,喷射力表示玩家被喷出的初始速度。
门连接是一种使用门来传送的方式,当玩家在门连接处按一下上键时,玩家将会进入门内传送到其他地方。门连接可以覆盖在门背景上,在门传送时门背景将会播放门打开/关闭动画。下面是参考摆放方式。
传送效果如下:
瞬移连接是让玩家在接触到连接对象的一瞬间传送到其他地方。这种连接方式可以用来制作场景的转场。下面是参考摆放方式:
传送效果如下:
连接对象的属性:
- 连接标号:决定该连接对象的连接标号。
- 传送方式:决定该连接对象的传送方式,你可以设置传送方式为水管、门或者瞬移。
- 入口/出口:决定该连接对象是一个入口还是一个出口。
- 方向:如果传送方式为水管,决定该连接对象的水管传送方向。(具体可以参考编辑区域内的箭头指示)
- 喷射力:如果传送方式为水管且为出口,决定玩家在该连接对象出来时被喷射的初速度。
- 传送到关卡:设置对象的连接到的关卡。
- 关卡传送方式:设置对象传送到关卡的方式。
- 关卡传送到的连接标号:设置对象传送到关卡的连接标号。
- 传送到关卡X/Y坐标:设置对象传送到关卡的X/Y坐标。
- 传送到地图:设置玩家是否以连接的方式退出后传送到地图指定地点。
- 传送到地图X/Y坐标:设置玩家以连接的方式退出后传送到的地图横/纵坐标。
返回目录
3.5.7 文本框
文本框(TextBox)是一类控件型对象,允许在关卡内显示文本,为玩家实时地提供文本信息。
点击工具栏的文本框按钮,绘制模式下在编辑区域内拖出一个矩形,松开鼠标左键创建一个文本框。
文本框的属性如下:(你可以通过修改文本框属性来获得不同的文本框样式)
如何设定文本框的内容?你可以在文本内容中修改属性值,输入的文本即文本框显示的文本。
文本框的字体可以在字体下拉框中选择,下拉框同样具有搜索功能,便于快速搜索字体。
如果文本框具有阴影,你可以设置文本框的阴影方向,在弹出的方向选择框中选取一个合适的角度即可。
关于文本前景色和后景色:前景色表示文本内容的颜色,后景色表示阴影颜色,你可以通过设置颜色让文本具有透明效果。
注:ARGB的值分别表示Alpha,Red,Green,Blue四个颜色分量,其中Alpha表示当前颜色的透明度。
其他属性:
- 字体大小:决定显示文本字体的大小。
- 粗体/斜体/下划线/阴影效果:决定显示的文本是否具有对应效果。
- 阴影偏移量:设置文本的阴影偏移量。(单位:像素)
- 水平对齐:设置文本的水平对齐方式。分为左对齐、居中和右对齐。
- 竖直对齐:设置文本的竖直对齐方式。分为顶端对齐、居中和底端对齐。
返回目录
3.5.8 图片框
图片框(PictureBox)也是一类控件型对象,允许在关卡中显示一张PNG图片。
如何使用图片框显示一张图片?
点击工具栏的图片框按钮,绘制模式下在编辑区域内拖出一个矩形,松开左键生成一个图片框。
图片框有以下属性:
点击图片属性项,弹出选择PNG图片的对话框。
在工程文件夹\Resource\graphics\level\picture内打开需要显示的图片。
然后图片就成功显示啦~(゜-゜)つロ
注意:需要显示的图片必须存放在工程文件夹\Resource\graphics\level\picture文件夹中。
- 是否作为固体属性项:决定该图片框是否作为一个固体方块,其固体区域为整个图片框的矩形区域。
返回目录
3.5.9 事件区域
事件区域(Event Area)是一类控件型对象,允许设置事件的触发条件和相应的独立事件。事件区域有多种触发方式,包括与玩家互动触发和与NPC互动触发。
如何摆放事件区域呢?点击工具栏的事件区域按钮,绘制模式下在编辑区域内拖出一个矩形,松开左键生成一个事件区域对象。
事件区域的属性如下:
具体使用方式在事件章节中详细介绍。
返回目录
3.6 高级功能部分
欢迎进入NSMX编辑器指南的高级部分!在该部分之前,你已经拥有制作最基本关卡的能力,能够制作出一个具有可玩性的关卡。现在你将通过阅读本章节,了解并掌握如何在NSMX中实现更为复杂的效果,让你的关卡设计得更为有趣。
3.6.1 组
组(Groups)是NSMX所有关卡对象的一种重要的分组方式。在一个关卡中,可以包含多个组,也可以只有一个组。每个组包含有不同的关卡对象成员,每个关卡对象必然属于某一个组。新建关卡后,关卡会自动创建名称为“默认”的分组,这是关卡内的主要分组。你可以通过事件系统来全局地对某个组内所有对象进行统一操作,比如集体显示、集体隐藏、设置集体移动速度等。
组窗口允许添加、删除或者修改组。如何打开组窗口呢?你可以通过点击工具栏上的组按钮或者在视图菜单→公共分组来打开组窗口。
组的创建操作:点击创建按钮来创建一个组,你可以在文本框内修改新创建的组名称,回车完成名称的修改。
组的删除操作:点击删除按钮来删除一个组。
如何在对应的组里放置对象呢?
点击你需要放置对象的组,然后在编辑区域内放置对象就好啦。编辑区域会实时提示你当前所使用的组。
如何查看对象属于哪个分组?
你可以点击对象,查看对象属性中所在分组。
你也可以选中对象,你可以更直观地看到多个对象的不同分组情况。不同的组之间使用不同的颜色作为区分。
返回目录
3.6.2 公共数值
公共数值(Public Value)是共享于整个关卡的数值变量,可作为关卡内数据信息储存的变量使用。公共数值可以使用整数表示,也可以使用小数表示。公共数值的运算法则与我们所学的数学知识相同,你可以在事件系统中修改其值或者使用公共数值进行运算。
公共数值窗口允许添加、删除或者修改公共数值。你可以通过点击工具栏上的公共数值按钮或者在视图菜单→公共数值来打开公共数值窗口。
点击创建按钮创建一个公共数值,你可以在文本框内修改选定公共数值的名称,也可以点击删除按钮删除选中的公共数值。
返回目录
3.6.3 公共开关
公共开关(Public Flag)是共享于整个关卡的开关变量。公共开关只有开和关两个值,适合设定事件的执行状态。你可以在事件系统中修改或者使用公共开关的值。
什么是开关?在NSMX中,开关表示开和关两种不同的相对状态,提供了相对状态的储存方式。在逻辑运算中,满足逻辑条件返回开,不满足逻辑条件返回关。比如(1+1>1)返回开,而(1+1<1)返回关。
开关的逻辑运算法则:
A: 并且(当且仅当两个开关都为开时返回开,其他情况均返回关)
- 开 并且 开 返回 开
- 开 并且 关 返回 关
- 关 并且 开 返回 关
- 关 并且 关 返回 关
B: 或者(只要有一个开关为开,则返回开,否则返回关)
- 开 或者 开 返回 开
- 开 或者 关 返回 开
- 关 或者 开 返回 开
- 关 或者 关 返回 关
C: 取反(返回开关的相反状态)
公共开关窗口允许添加、删除或者修改公共开关。你可以通过点击工具栏上的公共开关按钮或者在视图菜单→公共开关来打开公共开关窗口。
点击创建按钮创建一个公共公共,你可以在文本框内修改选定公共开关的名称,也可以点击删除按钮删除选中的公共开关。
返回目录
3.6.4 事件系统
事件系统(Event System)是本章节的核心部分,当你掌握了事件系统后,你将有能力实现更多复杂的功能。下面分多个部分介绍NSMX的事件系统。
3.6.4.1 独立事件与公共事件
事件系统有两种事件类型,一种是独立事件(Individual Events),另一种是公共事件(Public Events)。独立事件是指该事件只属于某一个关卡对象,只能通过这个关卡对象触发并执行。而公共事件可以被所有的关卡对象调用,也可以通过一些特殊条件触发并执行。
NSMX有三种关卡对象拥有独立事件,分别是方块对象、NPC对象和事件区域对象。下面为独立事件的编辑界面:
独立事件窗口为一个事件编辑区域,窗口标题表示所属的对象和该对象触发的方式。
公共事件的编辑界面如下:
公共事件的创建和删除:
点击创建按钮创建一个新的公共事件,你可以在左上角的文本框里修改当前选中的公共事件名称。
点击删除按钮删除选中的公共事件。
返回目录
3.6.4.2 事件的触发与执行
当事件被触发时,事件才会被执行。如果事件处于挂起的状态,事件的触发并不会影响该事件的执行进程。也就是说,触发事件可以让事件执行,而不改变挂起中事件的进程。
举例说明一些可能出现事件处于挂起中的状态的情况:
- 事件正在显示文章。
- 事件正在等待(Sleeping)。
独立事件的触发:
对于独立事件的触发,每种对象拥有不同的独立事件触发方式。下面为每种对象的独立事件触发方式:
方块对象独立事件:
NPC对象独立事件:
事件区域对象独立事件:
注意:可执行次数表示事件区域对象所能够触发自身独立事件的次数,如果设置为-1,表示可以无限次触发。
公共事件的触发:
你可以在公共事件窗口左下角的触发条件框内设置公共事件的触发条件。一旦满足所选的触发方式将会自动让该公共事件被触发。
公共事件的所有触发方式:
- 仅被调用时执行:当其他事件调用该事件时,该事件才会被触发。
- 关卡开始时执行:当关卡开始时触发该事件。
- 总是执行:总是触发该事件,即让该事件始终处于执行状态。
- P按钮事件开始时执行:当玩家踩下P按钮时触发该事件。
- P按钮事件结束时执行:当P按钮的效果结束时触发该事件。
- 无敌星状态开始时执行:当玩家吃掉无敌星的瞬间触发该事件。
- 无敌星状态结束时执行:当玩家的无敌星效果结束时触发该事件。
- 有按键按下时执行:当玩家的控制器按下一个键时触发该事件。
- 有按键松开时执行:当玩家的控制器松开一个键时触发该事件。
- 玩家受伤时执行:当玩家受伤时触发该事件。
- 玩家死亡时执行:当玩家死亡时触发该事件。
- 关卡首次创建时执行:当玩家首次进入关卡时触发该事件。(这个事件只能被触发一次,与关卡开始时触发不同)
- 敌人死亡时执行:当敌人NPC死亡时触发该事件。
- BOSS死亡时执行:当一个BOSS类型的NPC死亡时触发该事件。
- 所有BOSS死亡时执行:当关卡内所有BOSS类型的NPC死亡时触发该事件。
你可以为公共事件的触发设置附加条件,若你在附加条件项选择公共开关,且在当此开关为开处设置了一个开关,那么公共事件在满足了前面的触发条件后还需要满足这个开关为开时才能被触发。如下图所示:
返回目录
3.6.4.3 事件的语法结构
NSMX事件系统支持使用三种语法结构,分别为顺序结构、选择结构和循环结构。
3.6.4.3.1 顺序结构
顺序结构(Sequence Structure)是最简单的语法结构,也是最常用的语法结构,它的语句执行顺序是自上而下,依次执行。在NSMX中,顺序结构的执行方式如下:
事件系统中顺序结构的参考模板:
返回目录
3.6.4.3.2 选择结构
选择结构(Selective Structure)用于判断给定的条件,根据判断的结果来控制事件的流程。在NSMX中,选择结构的执行方式如下:
图解中的语块可能为空,如果语块B为空,表示不满足条件时直接跳过选择结构。
事件系统中选择结构的参考模板:
if语句表示结构图中语块B为空,if…else语句表示语块B不为空。你可以使用多个条件结构嵌套来实现if…else…else…等更多分支的选择结构。
返回目录
3.6.4.3.3 循环结构
循环结构(Loop Structure)是指在事件中需要反复执行某个功能而设置的一种语法结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。在NSMX中,循环结构的执行方式如下:
一个合法的循环结构,必须能够退出循环或者能够在循环体中让事件挂起。
事件系统中循环结构的参考模板:
返回目录
3.6.4.4 表达式
表达式(Expression)是NSMX中一个可计算的式子,可对其表示的内容进行计算并最终返回计算结果。NSMX提供了对新手友好的表达式形式,你可以使用表达式来实现复杂的运算。
3.6.4.4.1 元素、运算符和括号
表达式由三部分组成:元素、运算符和括号。
元素:在上图中“1”、“2”、“3”表示表达式的一个元素,代表着一个数值或者一个开关。元素可以为变量或者常量,是表达式最基本的组成部分。表达式必须存在至少一个元素,最简单的元素是“空元素”,它表示数值0或者开关关。
运算符:上图的“+”表示表达式的一个运算符,运算符将单个或多个元素进行运算操作并返回运算结果。如上图的“2+3”返回5。
括号:上图的“(”和“)”表示表达式的一组括号,一组括号包含表达式的一个子表达式。括号决定了表达式的计算顺序。计算规则是最先计算内部括号包含的子表达式,后一层层往外计算。在(1+(2+3))中,先计算(2+3),得到5,再计算(1+5)最终返回结果6。
返回目录
3.6.4.4.2 表达式格式
表达式格式(Expression Format)是表达式内包含单个或多个元素、一个运算符和一对括号的结构。
通过鼠标浮动在表达式上,你可以迅速地定位一个表达式格式或者一个元素。使用鼠标左键单击定位部分,将会选择一个表达式格式或者一个元素:
你可以通过对元素右键来新增表达式格式:
你也可以通过右键点击表达式格式的运算符或者括号部分来删除表达式格式,被删除的部分将被替换为“空元素”:
下面分类介绍NSMX的多种表达式格式:
A.数学运算
- 加上一个值:(元素A+元素B) 返回两个元素相加的结果。
- 减去一个值:(元素A-元素B) 返回元素A减去元素B的结果。
- 乘以一个值:(元素A×元素B) 返回两个元素相乘的结果。
- 除以一个值:(元素A÷元素B) 返回元素A除以元素B的结果,当元素B为0,返回元素A。
- 获取除以一个值的余数:(元素A 求余 元素B) 元素A除以元素B,不够除的部分作为返回的结果。若元素B为0,返回元素A。
B.基本数学函数
- 取该值自乘某个数值次的结果:(元素A^元素B) 返回元素A自乘元素B次得到的结果,即计算元素A的元素B次方。
- 取该值以10为底的对数:Lg(元素A) 返回元素A以10为底的对数结果,即计算Lg(元素A)。
- 取该值以e为底的对数:Ln(元素A) 返回元素A以自然底数e为底的对数结果,即计算Ln(元素A)。
- 取该值的二次根:√(元素A) 返回元素A的二次根结果,即计算√元素A。
- 取该值与另一个值的最小值:较小(元素A,元素B) 如果元素A比元素B小,返回元素A,否则返回元素B。
- 取该值与另一个值的最大值:较大(元素A,元素B) 如果元素A比元素B大,返回元素A,否则返回元素B。
- 取该值到另外一个值之间的随机数:随机数(元素A,元素B) 返回在元素A~元素B中随机获取的一个数值,这个数值可能为小数。
- 取该值的绝对值:绝对值(元素A) 如果元素A为负数,返回元素A的相反数,否则返回元素A本身。
- 取不大于该值的最大整数:向下取整(元素A) 返回不大于元素A的最大整数,对应于数学函数floor()。
- 取不小于该值的最小整数:向上取整(元素A) 返回不小于元素A的最小整数,对应于数学函数ceil()。
- 取该值四舍五入后的结果:四舍五入(元素A) 如果元素A的小数部分小于0.5,返回元素A的整数部分,否则返回元素A的整数部分加1。
C.三角函数
- 取该值的正弦:Sin(元素A) 返回元素A的正弦值。
- 取该值的余弦:Cos(元素A) 返回元素A的余弦值。
- 取该值的正切:Tan(元素A) 返回元素A的正切值。
- 取该值的反正弦:ASin(元素A) 返回元素A的反正弦值。
- 取该值的反余弦:ACos(元素A) 返回元素A的反余弦值。
- 取该值的反正切:ATan(元素A) 返回元素A的反正切值。
D.逻辑运算
- 并且:(元素A 且 元素B) 如果元素A和元素B都为开,则返回开,否则返回关。
- 或者:(元素A 或 元素B) 只要元素A和元素B中有一个元素为开,就返回开,否则返回关。
- 取反:取反(元素A) 如果元素A为开,则返回关,否则返回开。
D.比较两个值
- 相同于一个值:(元素A=元素B) 如果元素A与元素B相同,则返回开,否则返回关。
- 不相同于一个值:(元素A≠元素B) 如果元素A与元素B不相同,则返回开,否则返回关。
- 大于一个值:(元素A>元素B) 如果元素A比元素B大,则返回开,否则返回关。
- 小于一个值:(元素A<元素B) 如果元素A比元素B小,则返回开,否则返回关。
- 大于或等于一个值:(元素A≥元素B) 如果元素A比元素B大或者跟元素B相同,则返回开,否则返回关。
- 小于或等于一个值:(元素A≤元素B) 如果元素A比元素B小或者跟元素B相同,则返回开,否则返回关。
返回目录
3.6.4.4.3 替换元素
你可以对当前选中的元素右键来替换当前元素。
下面分类介绍NSMX的多种可替换的元素:
A.立即数值
你可以将元素替换为一个立即数。立即数表示一个常量数值,你可以使用小数表示。
B.立即开关
你可以将元素替换为一个立即开关。立即开关表示一个常量开关,只有开和关两个值。
C.公共数值
你可以将元素替换为一个公共数值。
D.公共开关
你可以将元素替换为一个公共开关。
E.方块数据
你可以将元素替换为一个方块的横坐标/纵坐标/宽度/高度。注意,使用该元素必须保证方块数据是有效的,否则该元素将返回0。
怎么知道方块数据是否是有效的呢?
- 如果使用表达式的事件为方块的独立事件,那么方块数据有效并且为这个方块的数据信息。
- 如果使用表达式的事件为公共事件且被一个方块独立事件调用,方块数据同样是有效的,数据为该方块的数据信息。
- 调用者参数数据传递规则:如果使用表达式的事件为公共事件且被其他公共事件调用,调用者又被其他公共事件调用……最终的调用者为一个方块独立事件,方块数据依然是有效的,数据为该方块的数据信息。
F.NPC数据
你可以将元素替换为一个NPC的横坐标/纵坐标/横向速度/纵向速度/宽度/高度。使用该元素必须保证NPC数据是有效的,否则该元素将返回0。
怎么知道NPC数据是否是有效的呢?判断方法与方块数据相同,这里不再赘述。
G.玩家数据
你可以将元素替换为玩家的横坐标/纵坐标/横向速度/纵向速度/宽度/高度。
H.游戏系统数据
你可以将元素替换为游戏系统数据的生命数/金币数/分数/计时器数值。
返回目录
3.6.4.5 事件语句
语句(Statement)是构成事件的元素,所有的事件都由语句构成。不同的语句有着不同的功能,通过执行语句,事件可以实现各种功能。
3.6.4.5.1 语句的插入、编辑和删除
一个空的事件是这个样子的:
让事件具有功能,你需要为事件插入语句。在“右键添加一个新语句”行上右键选择插入,弹出新建事件语句窗口:
你可以在该窗口中选择一个合适的语句。
如果你需要修改已经编写好的语句,在该语句行上右键选择编辑,弹出语句的编辑窗口,你可以重新修改语句的设置。
如果你需要删除一个语句,在该语句行上右键选择删除即可。
返回目录
3.6.4.5.2 语句介绍
接下来将分类介绍每种类型的语句。(标题将使用该窗口内的分类展示)
3.6.4.5.2.1 结构
结构类型的语句即控制NSMX事件执行结构的语句,你需要了解该部分的语句来实现更为高级的选择结构和循环结构。结构类型的语句包括如下图的所有语句:
A.条件分歧
图中2~4行表示条件分歧的if语句,6~10行表示条件分歧的if…else语句。
if语句:当条件满足时执行内部语句,不满足直接跳到“分歧结束”处。
if…else语句:当条件满足时执行内部语句,不满足直接跳到“上述情况不成立是时执行以下操作”处。
条件分歧界面:
不符合的情况表示构建一个条件结构时是否使用if…else语句,若为否则使用if语句。
条件分歧提供了三种方式设置条件:比较两个开关、比较两个值、特殊条件。
(1)比较两个开关:
你可以比较源开关和目标开关来判断条件是否满足。两个开关可以设置为立即开关(开或关)或者公共开关。
比较方式为相同、相反。
(2)比较两个值:
你可以比较源数值和目标数值来判断条件是否满足。
两个数值可以设置为表达式、公共数值、玩家数据、方块数据、NPC数据和游戏数据(具体内容查看表达式的替换元素章节)。注意,使用方块数据/NPC数据必须保证事件为方块/NPC的独立事件或者为被方块/NPC的独立事件调用的公共事件或者为满足调用者参数数据传递规则的公共事件,否则数值将使用0表示。
比较方式有等于、大于、小于、大于或等于、小于或等于、不等于。
(3)特殊条件:
你可以通过是否满足特殊条件的描述来判断条件是否满足。
特殊条件包括判断控制器、玩家状态、玩家物理、方块名称、NPC名称、NPC物理几个方面。
控制器:如果对应按键被按下则满足条件。
玩家状态:如果玩家为所选状态则满足条件。
玩家物理:如果玩家满足所选的物理条件则满足条件。
方块名称:如果当前方块的名称与所选名称相同则满足条件。
NPC名称:如果当前NPC的名称与所选名称相同则满足条件。
NPC物理:如果NPC满足所选的物理条件则满足条件。
注意:使用与方块/NPC有关的特殊条件必须保证事件为方块/NPC的独立事件或者为被方块/NPC的独立事件调用的公共事件或者为满足调用者参数数据传递规则的公共事件。
B.循环
循环表示重复执行循环体的语句。编写循环语句时不允许出现死循环的现象,如果出现死循环现象会弹出报错窗口并强制退出游戏:
防止循环体死循环的方法:保证能够退出循环或者在循环体内让事件处于挂起状态。
C.终止循环
第二行表示终止循环语句,该语句能够退出当前循环。如果所处的循环为嵌套循环,则退出最内层的循环。
D.终止当前事件处理
当执行到该语句时,结束当前事件进程。
E.标签
设置一个标签,用于标签的跳转。
F.标签跳转
第一行为标签跳转语句。如果执行到该语句,事件将跳转这个标签的所在位置。
G.调用公共事件
当执行到该语句时,语句会暂停本事件进程并调用一个选定的公共事件,当调用的公共事件退出进程后继续本事件进程。调用公共事件时将遵守调用者数据传递规则,即如果当前事件拥有有效的方块/NPC数据,那么所调用的事件也会拥有有效的相同数据。
返回目录
3.6.4.5.2.2 系统操作
系统操作类型的语句即控制NSMX系统的语句。系统操作类型的语句包括如下图的所有语句:
A.显示文章
你可以在显示文章的编辑窗口内设置显示文章的内容。
当执行到该语句时,游戏会弹出一个文本框并在文本框内显示文章,同时事件将会挂起直到玩家按下确认按键。显示文章时游戏系统会继续正常的游戏进程,但是事件会在该语句处暂停,继续事件的方法是按下确认按键或者等待文章显示失效。
显示文本的技巧:使用\v[公共数值名称]格式可输出公共数值的值,使用\n可使显示文本换行。
显示文本效果:
B.设置文章显示时间
当执行到该语句时,该语句只作用于接下来第一个执行的显示文章语句。接下来执行到第一个显示文章的语句时,文本框将会在经过所设置的时间后自动消失。
C.显示文章时暂停游戏进程
当执行到该语句时,该语句只作用于接下来第一个执行的显示文章语句。接下来执行到第一个显示文章的语句时,游戏进程将会暂停直到文本框失效。
D.呼出暂停菜单
当执行到该语句时,显示游戏系统的暂停菜单,同时暂停游戏进程。
E.等待
当执行到该语句时,当前事件将会挂起,直到经过了所设置数值帧数的时间后恢复事件的执行进程。可以理解为让当前事件睡眠(Sleep),等待所设时间后唤醒事件。
F.注释
注释是一种无功能语句,对编写者起到提示的作用。
返回目录
3.6.4.5.2.3 公共变量
公共变量语句允许修改公共数值和公共开关。
A.公共开关操作
当执行到该语句时,将对所选的源公共开关进行修改操作。目标开关有立即开关和公共开关两种类型。该语句有两种操作方式:取值和取反。取值是使源公共开关的值与目标开关的值相同,取反则是使源公共开关的值与目标开关的值相反。
B.公共数值操作
当执行到该语句时,将对所选的源公共数值进行修改操作。目标数值有表达式和公共数值两种类型。该语句的操作方式有:赋值、增加、减去、乘以、除以、模。
- 赋值:即直接使源公共数值的值等于目标数值的值,相当于编程语句“源=目标;”。
- 增加:让源公共数值的值加上目标数值的值,即“自加”操作,相当于编程语句“源=源+目标;”。
- 减去:让源公共数值的值减去目标数值的值,即“自减”操作,相当于编程语句“源=源-目标;”。
- 乘以:让源公共数值的值乘上目标数值的值,即“自乘”操作,相当于编程语句“源=源*目标;”。
- 除以:让源公共数值的值除以目标数值的值,即“自除”操作,相当于编程语句“源=源/目标;”。如果目标数值为0,弹出除数为0的错误窗口并强制终止游戏。
- 模:让源公共数值的值整除目标数值的值并获取不足以除去的部分,相当于编程语句“源=源%目标;”。如果目标数值为0,弹出除数为0的错误窗口并强制终止游戏。
返回目录
3.6.4.5.2.4 组
组语句允许对某个组的所有对象进行全局操作。
A.设置组的可见性
当执行到该语句时,将对所选的组内所有对象的显隐性进行操作。你可以对所选的组进行显示、隐藏和切换操作。其中切换操作表示如果当前组为隐藏状态,则将其显示,否则将其隐藏。烟雾特技表示在组显隐性操作的一瞬间是否产生烟雾效果。
下面是该语句的实现效果:
B.设置组的运动
当执行到该语句时,将对所选的组内所有对象的运动方式进行操作。你可以设置组内所有对象的X(横向)速度和Y(纵向)速度。执行了该语句后,组内所有对象将具有所设置的移动速度并按照该速度移动。你你可以使用该语句来实现地面或者方块的移动效果,包括:飞船的上下浮动、坦克移动、木板移动等等。
下面是该语句的实现效果:
返回目录
3.6.4.5.2.5 音频
音频语句允许对NSMX的音频系统进行操作。
A.开启/关闭音乐
第一行为开启音乐语句,第二行为关闭音乐语句。你可以使用这两个语句控制NSMX的音乐系统为开启状态或者关闭状态。
B.开启/关闭音效
第一行为开启音效语句,第二行为关闭音效语句。你可以使用这两个语句控制NSMX的音效系统为开启状态或者关闭状态。
C.播放音乐
当执行到该语句时,播放选择的音乐。(你没看错是图中的是石头门 0w0)
D.播放当前场景音乐
当执行到该语句时,播放当前场景默认设置的音乐。你可以在场景的属性栏中查看和修改后台背景音乐。
E.停止播放音乐
当执行到该语句时,音乐系统会停止播放音乐。
F.播放音效
当执行到该语句时,播放选定的音效。
返回目录
3.6.4.5.2.6 屏幕
屏幕语句允许对NSMX的卷轴进行操作。
设置横向/纵向卷轴
通过执行该语句,摄像机的横轴或纵轴会按照相应的卷轴模式进行移动。卷轴模式有如下几种:
自由:摄像机在关卡区域内始终以玩家为中心。
固定:摄像机在横轴或纵轴的位置保持不变。
强制卷轴:摄像机在对应轴按照给定的速度进行移动,你需要在表达式中设定一个速度。下图是横向强制卷轴且移动速度为1.5p/f的效果:
拖屏恢复:摄像机使用系统预设的运动方式从当前位置移动到以玩家为中心的位置。
返回目录
3.6.4.5.2.7 游戏
游戏类型的语句允许对NSMX的游戏流程进行控制。
A.关卡完成/关卡失败
第一行表示关卡完成语句,第二行表示关卡失败语句。关卡完成表示通过了当前关卡,关卡失败表示当前关卡通过失败,与玩家在关卡中死亡的效果一致。
B.游戏完成/游戏失败
第一行表示游戏完成语句,第二行表示游戏失败语句。游戏完成表示通过了当前游戏,游戏失败表示当前游戏通过失败,与玩家在游戏中耗尽所有生命的效果一致。
返回目录
3.6.4.5.2.8 数据
数据类型的语句允许对NSMX的游戏数据进行操作。
A.显示/隐藏数据界面
第一行为显示数据界面语句,第二行为隐藏数据界面语句。数据界面即游戏中显示数据界面的GUI,下面是隐藏数据界面的效果:
B.生命数操作
当执行该语句时,玩家的生命数会根据语句进行数值操作。你可以给生命数赋值一个数值,也可以加上或者减去一个数值。
C.分数操作
当执行该语句时,玩家的分数会根据语句进行数值操作。你可以给分数赋值一个数值,也可以加上或者减去一个数值。
D.金币数操作
当执行该语句时,玩家的金币数会根据语句进行数值操作。你可以给金币数赋值一个数值,也可以加上或者减去一个数值。当金币数满100时,金币清零并且玩家增加一条生命。
E.开启/关闭计时器
第一行为开启计时器,第二行为关闭计时器。你可以通过该语句实现计时器的开启和关闭。当计时器开启时,才能进行计时器操作。
F.计时器模式操作
第二行为计时器模式操作语句。当计时器处于开启状态时,你可以将计时器模式设置为:不工作、倒计时和正计时。
- 不工作:计时器不进行计时功能。
- 倒计时:计时器进行倒计时功能,计时器数值每间隔一秒(61帧)减去1,当计时器归零时会使玩家死亡。
- 正计时:计时器进行正计时功能,计时器数值每间隔一秒(61帧)加上1。
G.计时器数值操作
当执行该语句时,计时器数值会根据语句进行数值操作。你可以给计时器数值赋与一个新数值,也可以加上或者减去一个数值。
返回目录
3.6.4.5.2.9 控制器
控制器类型的语句允许对控制器系统进行操作。
A.允许/禁用控制器输入
第一行表示允许控制器输入语句,第二行表示禁用控制器输入语句。如果禁用控制器输入,游戏系统将被禁止从键盘或者游戏手柄获取控制信息。
B.控制按键操作
当执行到该语句时,游戏控制系统将模拟按下所选的按键。
返回目录
3.6.4.5.2.10 玩家
玩家类型语句可以修改玩家的一些数值。
A.玩家横坐标/纵坐标操作
第一行为玩家横坐标操作语句,第二行为玩家纵坐标操作语句。当执行语句时,玩家的横坐标/纵坐标会根据语句进行数值操作。你可以给玩家横坐标/纵坐标赋值一个数值,也可以加上或者减去一个数值。使用该语句可以实现玩家的瞬移或其他更高级的效果。
B.玩家横向/纵向速度操作
第一行为玩家横向速度操作语句,第二行为玩家纵向速度操作语句。当执行语句时,玩家的横向速度/纵向速度会根据语句进行数值操作。你可以给玩家的速度赋值一个数值,也可以加上或者减去一个数值。使用该语句可以实现一些有趣的功能,比如被风吹动或者修改玩家重力等效果。
返回目录
3.6.4.5.2.11 非玩家角色
非玩家角色语句可以对游戏中的NPC进行操作,包括创建NPC、修改NPC数值等操作。
A.创建NPC
执行该语句时,事件系统会在游戏内创建一个NPC。通过设置所创建NPC的横坐标、纵坐标、X速度、Y速度和朝向,你可以初始化NPC的运动数据。当创建NPC时,你还可以设定是否在创建的位置生成烟雾特技。
生成NPC有四种方式:按实际坐标生成、按相对于当前方块的位置生成、按相对于当前NPC的位置生成、按相对于玩家的位置生成。
- 按实际坐标生成:NPC创建的位置即为实际位置。
- 按相对于当前方块的位置生成:NPC创建的位置为相对于当前方块的位置,偏移量为所设定的坐标数据。使用该生成方式必须满足该事件是方块的独立事件或者是满足调用者参数数据传递规则的公共事件。
- 按相对于当前NPC的位置生成:NPC创建的位置为相对于当前NPC的位置,偏移量为所设定的坐标数据。使用该生成方式必须满足该事件是NPC的独立事件或者是满足调用者参数数据传递规则的公共事件。
- 按相对于玩家的位置生成:NPC创建的位置为相对于玩家的位置,偏移量为所设定的坐标数据。
以下是该语句的一种效果:
B.NPC横坐标/纵坐标操作
第一行为NPC横坐标操作语句,第二行为NPC纵坐标操作语句。当执行语句时,NPC的横坐标/纵坐标会根据语句进行数值操作。你可以给NPC的坐标赋值一个数值,也可以加上或者减去一个数值。
C.NPC横向/纵向速度操作
第一行为NPC横向速度操作语句,第二行为NPC纵向速度操作语句。当执行语句时,NPC的横向速度/纵向速度会根据语句进行数值操作。你可以给NPC的速度赋值一个数值,也可以加上或者减去一个数值。使用该语句可以实现一些有趣的功能,比如NPC的加速、跳跃效果。
D.NPC反弹
当执行到该语句时,当前NPC的速度会反向。
注意:B、C、D包含的语句必须在NPC的独立事件或者是满足调用者参数数据传递规则的公共事件中才能使用。
返回目录
3.6.4.5.2.12 方块
方块语句允许创建一个方块。
创建方块
执行该语句时,事件系统会在游戏内创建一个方块。你可以设置所创建方块的横坐标、纵坐标和内容物来初始化方块。当创建方块时,你还可以设定是否在创建的位置生成烟雾特技。
生成方块同样有四种方式:按实际坐标生成、按相对于当前方块的位置生成、按相对于当前NPC的位置生成、按相对于玩家的位置生成。四种方式与创建NPC语句的方式相同,这里不赘述。
下面是一种实现效果:
返回目录
3.6.4.5.2.13 特效
特效语句允许创建一个特殊效果。
创建特效
执行该语句时,事件系统会在游戏内创建特效。
生成特效同样有四种方式:按实际坐标生成、按相对于当前方块的位置生成、按相对于当前NPC的位置生成、按相对于玩家的位置生成。四种方式与创建NPC语句的方式相同,这里不赘述。
下面是一种实现效果:
返回目录
3.6.4.5.2.14 大地图
施工中……
返回目录
3.6.4.6 实用实例
这里列举几个实用的事件编写实例供编写者参考。
3.6.4.6.1 游戏倒计时
在“游戏开始时执行”的公共事件编写如下内容:
返回目录
3.6.4.6.2 移动地面
使用名为“Move1”的组绘制地面。在“游戏开始时执行”的公共事件编写如下内容:
返回目录
3.6.4.6.3 打败BOSS通关
在“BOSS死亡时执行”的公共事件编写如下内容:
返回目录
3.6.4.6.4 踩完所有按钮接触路障
在名为“Lock”的组放置路障。
新建名为“CheckCount”的公共数值,在“BOSS死亡时执行”的公共事件编写如下内容:
在名为“Check”的“仅被调用时执行”的公共事件编写如下内容:
放置5个按钮,在“死亡时执行”的独立事件编写如下内容:
返回目录
3.6.4.6.5 无敌星音乐
在“无敌星状态开始时”的公共事件编写如下内容:
在“无敌星状态结束时”的公共事件编写如下内容:
返回目录
任天堂角色和主题的所有权利归任天堂持有,请通过购买任天堂游戏和游戏系统以支持任天堂。
All rights to Nintendo Characters and themes are held by Nintendo, please show you support of Nintendo by purchasing Nintendo Games and Game systems.