初始化
首先肯定是初始化,每个角色在收到广播时,都需要一个初始化状态:
还是大家最熟悉的一些基本信息,唯一不同的是这里定义了一个名为武器浮动的变量,这个变量是用来计算浮动的,这个我们后面会讲到。
接着,导入我们的武器造型:
三个武器的造型就行,空造型是多余的,并且把造型名改好。
编写数据
小猫派对中,一次能够携带三个武器。
我们新建一个列表,用它来控制我们携带的武器,我将它命名为“持有武器”。
这个列表表示我们已经戴在身上的武器,可以随时切换。
让我们为其添加三个项目:
这三个就是我们这次课程中要学会制作的三种武器了。
接下来我们创建一个新的列表“武器信息”,用来获取不同武器对应的数据:
信息之间使用“|”进行分割,武器的名称单独放,方便使用的时候检索。
信息如下:
蓄力枪2|3|20|10|0.5
突击步枪
3|2|5|20|1|0.1
武士刀
1|0
接下来,我们将获取信息的功能携程自定义积木,方便调用。
因为武器只需要调用其中的一个参数,所以我只做了一个:
我们创建一个新的变量“当前武器”,这个积木就是我们当前持有的武器,我们需要将造型切换到我们持有的武器:
枪械悬浮
下面,让我们开始编写武器的浮动
首先我们要让武器面向鼠标。
但因为我们使用了G相机,所以在获取鼠标坐标时,不能单独使用鼠标坐标获取的积木,而是需要和G相机搭配一起使用:
Y坐标同理。
那么,最终的代码如下图:
接着,我们来写武器坐标的处理。
因为近战武器在身前,不是身后,所以我们用一个如果来单独隔离近战的代码:
接下来的代码,我们在这个如果的否则里面编写。
利用我们上节中设计的缓动公式。
我们的X轴的终值是玩家身后一点点距离,这里我们使用
来表示武器需要移动到的X坐标,接着将它套入缓动公式和FPS的平滑计算:
在30帧下,速率设置为5是最舒服的速度。
接下来我们制作Y轴的移动,但是这里注意,因为Y轴我们是要做悬浮浮动的,所以这里我们使用一个临时变量来设置Y轴的位置:
Y轴的位置就是小猫的Y坐标的上面一点点,非常简单。
有了非线性了,接下来就是悬浮了。
我们这里只使用sin这个函数
通过计时器来计算出当前“sin”里的值。
因为三角函数是周期性函数,所以完全不用担心计时器太大导致的计算错误。
以上内容,都需要放入循环,完整如下:
近战悬浮
在如果里面,我们添加以下代码:
首先,这里使用了比较取巧的办法,直接修改造型的垂直缩放比例,做到翻转的效果。
接着,我们判断按下鼠标,如果鼠标按下了,就会砍一下,先使用非线性公式将武器的角度改到较为水平,然后再改回去。
因为在循环里面不会执行循环外面的内容,所以为了动画能流畅运行,我们需要把移动位置的积木作为一个名为“位移”的自定义积木放到循环里,积木如下:
基本还是一样的,最大的区别就是他们的终值变了,移到了身前。
松开鼠标后,角度就慢慢变回去,同时会不断的运行“位移”
整段代码:
屏幕抖动
还记得我们的“屏幕抖动”变量吗,现在我们需要给摄像机添加代码,实现这个屏幕抖动的功能:
我们在每等待0秒后,就让摄像机的坐标偏移一个不确定的量,然后G相机又会在那个0秒内尝试把摄像机拉回来,这样摄像机就会有抖动的感觉了!
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=WhiteCat101/baimao/Lec3/02&type=comment"
title="{小猫3-让武器悬浮起来}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>