3-2 昵称&文字显示优化
做完基础的MMO引擎之后我们就来做一下每个玩家的名字显示了。
制作玩家昵称
这个其实非常的简单。
首先我们先回到其他玩家本体代码的这个自定义积木:
然后我们在设置完ID变量的后面添加上一个克隆新的克隆体的代码 并且将新克隆体的data设为一个新的标识符
我这里给显示昵称的克隆体的标识符是 ® 这里也可以使用其他的 直接标识符连接ID就可以了:
然后就是来制作显示昵称的克隆体代码了,但在此之前我们创建一个新的自定义积木:
然后将我们刚才编写的代码:
放在刚创建的自定义积木里面,
然后我们将自定义积木放进克隆体那里就可以啦,这样就清爽多了!:
好了,整理完之后就让我们开始写显示昵称的代码。 首先我们按照惯例判断一下标识符:
然后我们再按照惯例获取一下ID,获取完之后就要做显示昵称了:
那么怎么显示呢?这个时候就要用到一个新的扩展了:
那就是大名鼎鼎的艺术字扩展! 然后我们回到克隆体的代码,先初始化个方向:
然后来初始化一下艺术字:
然后我们直接显示文字 玩家的名称 就可以了:
最后我们重复执行设置一个大小然后将文字移动到玩家对应的xy位置就搞定了。 不过这里要注意下Y轴要加一点点,因为不加的话他就直接和贪吃蛇头部重合了 就不好看清了:
最终效果:
然后我们顺带的来做一下分数显示以及其他玩家吃彩豆的处理~
制作界面信息显示
你有没有感觉过使用原版的变量作为显示实在是不怎么好看而且很占地方。
那么这个时候同样也可以用我们的艺术字扩展来替换掉变量显示。 我们先创建一个新的角色叫做 界面信息:
直接拖进文件夹中就好了:
然后我们就来编写一下界面信息的代码。 首先肯定是当接收到开始游戏,然后先将大小设置为一个合适的位置 我这里设置为 60 就可以。 然后设置一下坐标 把他放在右上角的位置,最后我们就写一下艺术字的初始化就可以了。 这里有一个新的积木 就是设置换行符:
然后我们来写一个循环,每次循环就将文字移动到最上层:
随后我们就来写一下文字显示的代码了。 直接显示文字然后拼接一下文字就可以了~ 这里有可以适当的将分数乘一些 这样长度看起来会更震撼一些。 当然我们光显示分数肯定是不够的,那么这个时候就要用到我们的换行符了:
我们将分数连接一个换行符让他换一下行 然后我们再显示在线人数就可以了~ 然后我们来运行看看效果:
诶?怎么少了一个按钮。 这就是因为Scratch的图层问题了,因为我们添加了一个角色 并且我们让这个角色移动到了最前面的一层
而我们的背景这里只后移了三层,这就出现了图层错误:
当然解决这个问题也非常简单,我们只需要将按钮的图层移动到最上层就可以了~ 这样就不会有冲突了。 好了,那让我们来运行一下:
好!可以看到非常的完美,文字成功的显示在了屏幕的右上角并且成功的换了行 好了那么接下来让我们制作一下本小结的最后一步~ 那就是解决一下其他玩家碰到彩豆之后我们这里彩豆不会删除的问题。 首先我们回到其他玩家本体的代码:
其实我们只需要判断他是否碰到彩豆如果碰到就让彩豆删除就可以了。 这里我们新增一段代码,跟我们之前写的碰到彩豆的代码同理 碰到彩豆了就将变量设为碰到的彩豆ID 然后我们发送一个新的广播叫做 其他玩家删除彩豆:
然后我们直接将这一段代码复制一遍就可以了:
就像这样 不过记得把分数增加和克隆彩豆动画的代码去掉就可以了~ OK!这样其他玩家碰到彩豆的处理就做好了。 不过最后的最后我们还有一个可以优化的点,那就是其他玩家的移动。 我们可以发现因为MMO的原因所以贪吃蛇移动的并不丝滑。 不丝滑?说到丝滑是不是肯定都想到了之前做过的非线性移动,没错!我们来给MMO加个非线性。
修改非线性
我们可以直接将之前写的函数拖进贪吃蛇的里面:
我们可以将这些直接全部替换成非线性移动就可以了~ :
替换后:
就像是这样~ 这样我们贪吃蛇的移动就会比之前丝滑很多了~ 下一节:制作触碰其他贪吃蛇身体被击败
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=snake/mckuke/Lec3/03&type=comment"
title="贪吃蛇中级教程-第三课第二节"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>