网易我的世界论坛

标题: 羊毛大作战 之 2 进入游戏 [打印本页]

作者: 小思哦    时间: 2019-7-2 15:33
标题: 羊毛大作战 之 2 进入游戏
上一期教程,我们实现了基本的玩法,已经可以脑补最终玩法的形态了。不过,距离让玩家很流畅的体验这个玩法,还有不少工作要做。

今天我们先来完成玩家进入游戏到把玩家传入到起始房间的功能。

做完后实现的效果是:
玩家加入游戏后,把玩家放到一个小房子里;
统计当前游戏内玩家数量

下面按步骤说明怎么达到这个效果(这一期将略过一些基础的操作和概念,如果有不明白的地方请看上一期教程)。

1 游戏出生点

我们先做一个小房子,作为游戏未开始时安放玩家的地方。

打开地图编辑器,材质选择橡木模板,笔刷选择方形笔刷,勾选“中空结构”,厚度设为1,就能够生成一个中空的、边长为12、壁厚为1的正方体了。
[attach]793328[/attach]
[attach]793330[/attach]
现在这个盒子还是闭合的,我们想让顶部是敞开的,可以用橡皮擦把顶部的方块都清除掉。选择“橡皮擦”工具,鼠标上就会显示一个橡皮图标,点击可以清除选中的方块,按住拖动,可以连续清除方块。
[attach]793331[/attach]
[attach]793332[/attach]

也有另外一种方式可以清除规则形状内的方块:先选中要清除的区域,然后用替换功能把区域内的方块都替换为空气。下面结合图片说明下这种操作方式。

先选择顶层一个角的方块。
[attach]793333[/attach]
鼠标移到上图中选中方块的右侧面上,按住鼠标,被选中的面会变成淡蓝色。
[attach]793334[/attach]
按住鼠标向右拖动,选中一行方块。
[attach]793335[/attach]
右键按住屏幕,旋转下视角,以方便选择另外一面。
[attach]793336[/attach]
鼠标放在上图选中区域的右侧面,按住鼠标。
[attach]793338[/attach]
向右拖动,直到选中整个顶层。
[attach]793339[/attach]
点击工具栏中的“替换”。
[attach]793340[/attach]
替换界面中,会列出当前选中区域内已有的方块类型,以及该方块类型要替换为什么方块。
[attach]793341[/attach]
点击左侧要设置的方块,再在右侧选择空气方块,然后点击“替换”按钮,就达到了我们要的效果。
[attach]793342[/attach]
[attach]793343[/attach]
[attach]793345[/attach]
好了,出生点就先用这个简陋的小房子了。

2 把加入游戏的玩家放到小房子里

玩家进入游戏后,我们要把他们放到小房子里等待游戏开始。

把出生点设置到小房子内是一种方式(将在7月支持该功能),这里我们介绍用逻辑编辑器的方式,用这种方式来做,能够在玩家加入游戏做更多的事情(比如给玩家道具、装备等)。

下面这段逻辑将要实现的效果是,当玩家加入游戏时,出现在小房子内随机的一个位置。
小房子地面的坐标范围可以在地图编辑器中方便的查看,选择屋角的一个方块,在编辑器底部的状态栏右侧,会显示当前选中的坐标。如下图。
[attach]793346[/attach]


通过这种方式,我们确定了小屋子的坐标范围是(25, 5, -13)到(34, 5, -22)。

接下来实现逻辑部分。
这部分逻辑我们挂在世界部分。选择关卡编辑器中的世界。
[attach]793347[/attach]

在属性窗口中选择新建逻辑(注意逻辑文件的命名不要包含中文字符)。
[attach]793348[/attach]

按下图连接节点。对应的节点分布位于:
事件节点->世界事件->玩家加入世界
参数节点->变量->随机数
参数节点->变量操作->合并三维坐标
行为节点->通用->设置实体位置
[attach]793349[/attach]

在这段逻辑里,我们在玩家加入游戏时,随机了一个房间内的坐标给玩家(Y是5是因为这是小房子地面的Y坐标,是固定的)。其中随机数节点会获得最小值和最大值之间的一个随机值,比如随机25~34之间的值,那么有可能得到26、30.4或其他任意满足范围要求的值。

3 判断加入游戏的人数

羊毛大作战是一个多人玩法,需要满足人数需求时才能玩得起来。
我们用一个变量来存玩家的数量,当有玩家加入时,变量加1,有玩家退出时,玩家减1,这样就能得到当前世界里玩家的数量了。

这部分逻辑我们同样放在世界里,在刚才的逻辑文件中,按下面的方式连接逻辑(红框内是新增的逻辑)。新增加的节点分别位于:
事件节点->世界事件->世界创建完成
参数节点->临时变量->添加临时变量
参数节点->临时变量->设置临时变量
参数节点->临时变量->读取临时变量
运算节点->算术节点->相加
运算节点->算术节点->相减
[attach]793350[/attach]

新增逻辑实现的功能为:当创建世界时,添加一个临时变量用来存玩家数量;当有玩家加入时,给这个临时变量加1;当有玩家退出世界时,给这个临时变量减1。通过这样的方式,我们可以得到当前游戏内有多少个玩家。这个玩家数量可以在后续游戏流程中作为判断依据(如只有达到2名玩家后才可以开始游戏)。

这里要特别解释下临时变量的概念。
临时变量由“键-值”对组成,“键” 就是上面截图中的“playerNum”这样的字符串,“键”会对应一个值,可以通过“键”来取到或者修改对应的值。
相应的临时变量有3个相关的节点:
[attach]793351[/attach]
添加临时变量:添加一个“键-值”对,只有添加了之后才能设置和读取对应的临时变量(上面的示例中添加playerNum临时变量后还设置了一次它的值,是由于目前的版本存在Bug,7月底的版本将无需再这么做);在添加临时变量时,如果键已经存在,那么不会进行任何操作,直接执行下一个节点。
设置临时变量:将临时变量的值设置为指定值;
读取临时变量:读取临时变量的值。

需要注意的是,当游戏结束运行后,临时变量会被清空。

4 避免自然生成的生物的影响

在编辑过程中,可能会生成很多原生生物,对我们的编辑造成影响,由于我们这个玩法不需要原生的生物,可以将原生的生物都去掉。

在关卡编辑器的世界选项中,取消“生物生成”的勾选,然后保存。
[attach]793352[/attach]

再通过舞台将已经生成的生物删除。在舞台上,在生物类型的名字上右键,然后点击删除,就可以将这一类的生物都删除掉。
[attach]793353[/attach]

本期教程就到这里了,下一期教程我们将实现从小屋子传送到羊毛区域并进行游戏的功能。







作者: reezhu    时间: 2019-7-3 14:41
期待特效编辑器的教程
作者: 我是绵羊Yang_g    时间: 2019-7-3 15:09
本帖最后由 我是绵羊Yang_g 于 2021-1-27 11:44 编辑

才发现有这软件[attach]1335930[/attach][attach]1335931[/attach][attach]1335932[/attach][attach]1335933[/attach][attach]1335934[/attach][attach]1335935[/attach][attach]1335936[/attach][attach]1335937[/attach][attach]1335938[/attach][attach]1335939[/attach][attach]1335941[/attach][attach]1335940[/attach][attach]1335942[/attach][attach]1335943[/attach][attach]1335944[/attach][attach]1335945[/attach][attach]1335946[/attach][attach]1335947[/attach][attach]1335948[/attach][attach]1335949[/attach]

作者: 逐梦飞扬    时间: 2019-7-3 15:10
一看就懂,一做就崩系列
作者: 新的测试    时间: 2019-7-10 14:21
唔- -
作者: 50829小号001    时间: 2019-7-12 13:19
我觉得还是直接搭小屋比较方便
作者: 廖千里    时间: 2019-8-6 09:47
很不错啊,我都觉得编辑器教程太少了难以入手,谢谢楼主
作者: MINECRAFT小飞    时间: 2020-3-21 20:05
新手表示只会用游戏模式




欢迎光临 网易我的世界论坛 (https://mc.netease.com/) Powered by Discuz! X3.3