簡單(菜)的LuaSTG教程4:簡單的自定義子彈
啊啊啊啊啊
好久沒更新了呢
作為補(bǔ)償,就多更幾個(gè)吧(大概
好了,廢話不多說,進(jìn)入正題
用久了simple bullet,你會(huì)發(fā)現(xiàn)這個(gè)東西其實(shí)有很多限制
比如說只能勻(變)速,角度也不能突變
那如果想做到這樣該怎么做呢?
哎,就要用到自定義子彈了

這個(gè)圈上的五角星,是定義一個(gè)子彈(define bullet),右邊的是創(chuàng)建定義子彈
這個(gè)定義的東西是除了亂七八糟的init里和task和回調(diào)函數(shù)里都能放(反正記住能放黑文件夾里就行了)

第一排是子彈的名字,第二排是難度(就是在子彈名字后面加一個(gè)難度,比如說bullet1:Lunatic)
選中下面的on create,左邊會(huì)顯示這個(gè):

從上往下分別是變量,子彈樣式,顏色,在發(fā)射點(diǎn)停留(?),是否可被摧毀
然后呢,你可以把task以及unit里面的東西等等放在on create里面(除了前兩個(gè))
然后創(chuàng)建方法呢,就是點(diǎn)那個(gè)帶加號(hào)的星星

選中你要?jiǎng)?chuàng)建的子彈,然后點(diǎn)ok(如果你加了難度,那就必須放到那個(gè)難度里去)
然后創(chuàng)建出來
欸這個(gè)子彈怎么不動(dòng)啊?
那是因?yàn)槟闶裁炊紱]設(shè)置,所以他沒動(dòng)
那怎么設(shè)置呢?
就要用到General里的code了

還記得(task) repeat怎么用嗎?
要放在create task里,
那么,這一坨的意思就是,每幀執(zhí)行一次,自身(self)的X坐標(biāo)(x)增加三
self.x可以理解為自身的x坐標(biāo)
然后看起來的效果就是一個(gè)速度為三,角度為0度的紅色鱗彈

這個(gè)的效果是,子彈以v的速度射出,角度為a
想必你也看到了on create的括號(hào)里的兩個(gè)變量


為了讓你們更看的懂,我把變量名改成了velocity和angle
還記得simple bullet的開花彈怎么做嗎?
這個(gè)就和simple bullet的開花彈同理.(圖中的angle為a那就是開花彈了

哎呀報(bào)錯(cuò)了
是什么原因呢?
上面寫了,是第十四行出問題了,那就用上面的搜索

哦,原來是這個(gè)code里的變量名沒改回來
咳咳,請(qǐng)把第二行改成self.y=self.y+velocity*sin(angle)
然后呢,你發(fā)現(xiàn)朝向全是往左的

只要在這個(gè)循環(huán)里加個(gè)self.rot=angle,就行了(rot代表的是朝向,即子彈朝向等于角度)
或者也可以在on create下加個(gè)self.navi=true,
這個(gè)等于true了之后,就會(huì)自動(dòng)根據(jù)位移來計(jì)算角度(是這么說的嗎)
然后呢,其實(shí)這個(gè)self.x=self.x+.....可以簡化為self.vx=.....
self.vy同理

emmm,這個(gè)還能更簡便,就是用Unit里的set velocity

這是最簡單的
然后呢,弄個(gè)子彈拐彎的例子好了

Aim to player就是自機(jī)狙,Set rotation就是子彈角度和朝向相同
每幀朝向加一,所以角度也加一
emmm,這一期是個(gè)開頭,之后會(huì)說更多的自定義子彈的例子