简单(菜)的LuaSTG教程4:简单的自定义子弹
啊啊啊啊啊
好久没更新了呢
作为补偿,就多更几个吧(大概
好了,废话不多说,进入正题
用久了simple bullet,你会发现这个东西其实有很多限制
比如说只能匀(变)速,角度也不能突变
那如果想做到这样该怎么做呢?
哎,就要用到自定义子弹了

这个圈上的五角星,是定义一个子弹(define bullet),右边的是创建定义子弹
这个定义的东西是除了乱七八糟的init里和task和回调函数里都能放(反正记住能放黑文件夹里就行了)

第一排是子弹的名字,第二排是难度(就是在子弹名字后面加一个难度,比如说bullet1:Lunatic)
选中下面的on create,左边会显示这个:

从上往下分别是变量,子弹样式,颜色,在发射点停留(?),是否可被摧毁
然后呢,你可以把task以及unit里面的东西等等放在on create里面(除了前两个)
然后创建方法呢,就是点那个带加号的星星

选中你要创建的子弹,然后点ok(如果你加了难度,那就必须放到那个难度里去)
然后创建出来
欸这个子弹怎么不动啊?
那是因为你什么都没设置,所以他没动
那怎么设置呢?
就要用到General里的code了

还记得(task) repeat怎么用吗?
要放在create task里,
那么,这一坨的意思就是,每帧执行一次,自身(self)的X坐标(x)增加三
self.x可以理解为自身的x坐标
然后看起来的效果就是一个速度为三,角度为0度的红色鳞弹

这个的效果是,子弹以v的速度射出,角度为a
想必你也看到了on create的括号里的两个变量


为了让你们更看的懂,我把变量名改成了velocity和angle
还记得simple bullet的开花弹怎么做吗?
这个就和simple bullet的开花弹同理.(图中的angle为a那就是开花弹了

哎呀报错了
是什么原因呢?
上面写了,是第十四行出问题了,那就用上面的搜索

哦,原来是这个code里的变量名没改回来
咳咳,请把第二行改成self.y=self.y+velocity*sin(angle)
然后呢,你发现朝向全是往左的

只要在这个循环里加个self.rot=angle,就行了(rot代表的是朝向,即子弹朝向等于角度)
或者也可以在on create下加个self.navi=true,
这个等于true了之后,就会自动根据位移来计算角度(是这么说的吗)
然后呢,其实这个self.x=self.x+.....可以简化为self.vx=.....
self.vy同理

emmm,这个还能更简便,就是用Unit里的set velocity

这是最简单的
然后呢,弄个子弹拐弯的例子好了

Aim to player就是自机狙,Set rotation就是子弹角度和朝向相同
每帧朝向加一,所以角度也加一
emmm,这一期是个开头,之后会说更多的自定义子弹的例子