4-1 修复细节
嗨害!欢迎来到MMO贪吃蛇系列教程的第四课~
在上一课中我们成功的制作了多人联机的功能,不过显然还是有很多可以优化和修复的点,
不知道各位有没有发现?那我们现在就正式开始制作吧!
解决小BUG
首先就是第一个小BUG:
我们在刚进入游戏的一瞬间可以看到我们上一次退出的位置有一节身体,那么这个是哪来的呢?让我们来分析一下:
我们看到是不是其实按照这段代码的逻辑来讲我们是会先等待连接成功然后在回到中心点的?
然后配合我们的另一段代码那么就会先在之前的位置生成一个克隆体然后再连接成功,这样也就形成了还没来得及重置就开始克隆导致的上一次退出的位置会多一个克隆体。
那么这个问题其实也非常的好解决 我们是不是可以直接让他等待连接MMO服务器成功之后再开始克隆就可以了。
我们直接让他等待我的ID等于NaN不成立 也就代表我们连接进了房间,那么这个时候再克隆:
就像这样!不过为了保险起见我们可以把初始化的代码放在连接的前面:
就像这样!这样之后我们就不会出现之前的克隆问题了。
那么接下来就是解决第二个小BUG了,那就是:
如果两名玩家同时在出生点时那么他俩就会无限被击败,那么这个问题我们就要引入一个新的机制了。
那就是无敌时间!没错让我们给每次重生之后给予玩家一个五秒的无敌时间,这样在出生点的时候就不会出现两个人同时在出生点互相击败的问题了~
那么首先我们创建一个新的变量叫做 "无敌时间"
然后我们再创建一个新的积木叫做 "设置无敌时间" 并且加上一个参数:秒:
然后我们来到扩展库中添加一个新的扩展 也就是时间扩展:
然后从扩展中拖出现在时刻的积木:
然后我们将无敌时间设置为 现在时刻过(秒)的时刻:
然后我们再来创建一个新的自定义积木用来判断现在是否在无敌时间内:
名字叫做 "是否无敌?" 并勾选返回值积木。
然后如果 现在时刻距离无敌时间的秒数大于0 那么就返回1 否则返回0:
然后我们回到检测贪吃蛇是否被击败这里,然后在这里添加上设置无敌时间的代码:
这里我们将无敌时间设为5秒就可以了 各位也可以自己自定义!
然后我们再来做一下控制无敌模式时候的特性积木,名字叫做 "贪吃蛇虚像效果"
如果处于无敌状态的话那么就将虚像设为30 否则设为0就可以了:
好了,接下来让我们实装一下。
我们将虚像效果的自定义积木分别放进本体的循环以及克隆体的循环中
然后我们在游戏刚开始的时候也给一个五秒的无敌时间
那么最后我们就要来同步一下虚像效果了,首先我们新增一项MMO额外数据:
这样就可以了,接下来我们分别在其他玩家的克隆体中同步一下虚像数据:
这样我们就搞定了同步问题,接下来让我们制作一下无敌的效果。
那么首先我们先回到其他玩家的身体代码这里,来到检查贪吃蛇是否被击败的逻辑这里:
首先我们先加一个新的判断 判断一下克隆体的虚像是否等于0,也就是当前不处于无敌模式:
然后我们再来加个判断,如果我们自己也不处于无敌状态的话那么才执行击败脚本:
好!那么让我们来看一下效果:
非常的成功~
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=snake/mckuke/Lec4/02&type=comment"
title="贪吃蛇中级教程-第四课-第一节"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>