3-4 其他贪吃蛇碰撞交互
那么接下来就是本节课的最后一小节了~
生成贪吃蛇掉落物
首先我们创建一个新的角色叫做 "掉落物":
然后我们切换到造型编辑器来给掉落物绘制一个素材~ 这里我就不让大家照着我画了,因为我画的也实在是不太行:
就像这样!这里大家可以自由发挥,不过这里大家记得画一层隐藏碰撞层~ 然后我们回到贪吃蛇的角色:
我们来新建一个自定义积木,来方便的创建掉落物。 名为 生成掉落物(参数)大小(参数),并勾选运行时屏幕不刷新:
然后我们再创建一个新的变量叫做 "生成掉落物循环" 并勾选 仅适用于当前角色:
然后我们就来编写一下自定义积木的代码。 首先我们刚开始整一个临时列表 "生成掉落物缓存" 并且把列表内容设置为(列表), 然后我们将循环次数初始化为零,重复执行循环刚才的临时列表的长度次 每次循环将循环次数+1。 随后就是克隆掉落物角色了:
然后让我们来写一下创建掉落物的数据:
就是三个参数 X,Y,size(大小),然后我们将他组合起来:
就像这样,稍微有点长不过问题不大。 那么接下来肯定就是做调用这个积木啦,我们直接写在贪吃蛇被击败的时候就可以了。 直接按照贪吃蛇的身体数据生成(记得转换为json):
同步贪吃蛇掉落物
然后当然了 我们本地克隆了但是其他人眼里没有啊。 所以这个时候我们要加一个MMO广播,我们发送一条MMO广播 名为 "新增掉落物", 同时我们创建一个json将参数也传输过去~:
然后我们就来写一下接收的代码。 首先肯定是当接收到MMO广播,然后判断一下是不是本体 如果是 那么再来判断一下消息类型是不是 新增掉落物, 如果都满足那么就直接按照传输过来的参数生成掉落物就可以了~
然后我们来到掉落物角色编写我们需要的脚本~。 当绿旗被点击先隐藏一下,然后就是当克隆体启动时 先启动到最后面并且显示, 然后我们直接移动到data参数的x,y位置,这里可以将坐标随机增加一些数值 这样生成出来的会更自然一些~, 最后我们将大小设为参数size就可以了!
OK 这样我们的掉落物生成就搞定了,那么接下来编写一下吃掉掉落物的代码。 首先回到贪吃蛇角色 来到检测碰到彩豆的自定义积木这里,我们直接将代码复制一份:
就像这样,然后我们将代码的参数都改成掉落物:
就像这样,这里我们创建了一个新的变量和广播用来给掉落物使用。 然后我们再次回到掉落物角色,编写一下掉落物删除的脚本。 首先肯定是当接收到广播 然后判断一下碰到的掉落物是否是自己,如果是的那么我们就克隆一波彩豆动画(等会改一下名字)并且创建一个新的 Json,ID、X、Y、size 四个参数。 然后我们将分数增加一个大小除以60左右的数值就可以,最后我们删除此克隆体就行了~:
然后我们来到 彩豆动画 角色,并改个名字 我们可以直接改为 "实体动画" 这样应用范围更广:
然后我们将掉落物的造型复制到实体动画中:
并且我们记得切换一下造型:
然后我们整体复制一下,然后将切换的造型改为 掉落物。 随后将设置颜色特效的积木删除 改为将大小设为参数size,其他的就不用改了~:
就像是这样!最后我们再回到贪吃蛇的角色 来到其他玩家本体代码这里:
然后我们将检测碰到彩豆的代码复制一份,然后将参数都改成掉落物:
这里记得新建一个广播~,然后我们就回到掉落物角色写一下简易的代码就可以了。 这里和隔壁彩豆的同理~ 我就不细讲了:
好!这样我们就大功告成了,我们再来最后检测一遍有没有什么漏掉没整的:
诶,我们是不是发现我们忘记给他显示击败数了。 最后我们来做一下击败数的显示就大功告成了:
就像这样!然后让我们来运行一下:
诶?我刚才明明只击败了一个人 怎么击杀数直接变58了。 我们来看一下增加击杀数的代码:
斯,哪里有问题呢? 有没有发现我们其实忘记加检查是否是本体运行了,如果不加检测的话那么克隆体和本体都会接收到这个广播, 并且会执行这段代码 这就出现了击败敌人一次却增加了一堆击败数的问题:
我们加一个判断就好了~好!那么最后让我们来看看效果吧~
耶!别忘了把你的作品发布出来!投稿到星球🪐 一起讨论关于 MMO 制作贪吃蛇的更多知识吧! 下周见!
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=snake/mckuke/Lec2/05&type=comment"
title="贪吃蛇中级教程-第二课第四节"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>