显示子弹
首先,我们创建一个名为子弹的角色:
绘制一个黄色的小球,他就是我们的子弹本体了。
数据处理
和武器一样,也需要自定义积木来控制获取武器的信息,所以这里我们制作一些积木:
接下来,我们写一个自定义积木,专门用于计算子弹的位置:
这个积木带入的值是武器的坐标和朝向,根据我们之前教学的三角函数,这个积木的效果就是让子弹移动到武器的坐标,并向武器的朝向偏移一点。
射击逻辑
接下来我们来编写射击逻辑。
首先还是初始化:
接着是一个循环,移动到我们武器的枪口,
接下来我们判断鼠标是否按下,如果我们的武器类型是“2”也就是蓄力射击,如果成立我们就让大小在之前设置的参数“子弹大小”范围内不断增加。
因为小猫派对在子弹越大时,屏幕越抖,所以我们创建一个变量“抖动强度”来作为我们屏幕抖动强度的判断:
接下来我们判断鼠标按下后,武器类型是“3”也就是连续射击的情况。我们检测到冷却结束就开始射击
因为近战武器没有子弹,所以这里我们不用考虑近战的情况。
当然,如果没有按下鼠标,也就是否则中,我们也需要对子弹的状态进行还原:
这里判断子弹大小>4是因为蓄力完成后释放鼠标也会进入这里,所以我们先进行射击一次,至于为什么是4,因为太小的子弹射出去意义不大,还会浪费MMO的广播位置。
到此,这段代码如下:
射击的函数很简单了,我们分别使用4D广播和MMO广播一下我们射击的所有信息即可,这里我们带入的信息有:
- X坐标
- Y坐标
- 子弹大小
- 武器方向
- 子弹移速
- 子弹攻击力
- 射击者
因为MMO发送的广播不会被自己接收到,所以这里我们同时使用MMO和4D进行广播,不过发送的MMO广播信息中,射击者是自己的玩家ID,而4D广播中,射击者是“self”
使用“self”而非自己的ID是为了方便判断,如果自己射击的子弹碰到自己就不会扣血。
接下来我们写子弹射击的逻辑:
因为广播是会让克隆体收到的,所以这里我们要先排除克隆体,除非你想卡炸。
接着我们来判断事件的名称,如果是射击,我们就用信息作为key克隆一个子弹克隆体。
当子弹被克隆时,就需要解析这些信息,并进行相对的操作,首先肯定还是初始化子弹:
接着我们移动子弹,这里我们循环1000/射程次,这样当射程越大,循环次数就越少;射程越少,循环次数就越多:
在循环中,我们直接使用移动。
接着我们判断这个子弹是否碰到了玩家,如果碰到了,只要不是玩家射击的子弹,都会扣血:
这个扣血的量是和子弹的大小挂钩的,大小越大,伤害越大。
如果碰到的不是玩家的本体,那碰到的就是其他玩家了,是其他玩家的话,那就判断是不是那个玩家射击的,如果不是,那就删除这个克隆体。
现在,这段代码你就已经完成了,让我们来看看整段代码:
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=WhiteCat101/baimao/Lec3/03&type=comment"
title="{小猫3-让子弹显示出来}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>