LuaSTG:激光連線與乙姬非符

????注意:該文章僅為提供本人思路,實現(xiàn)手法多多少少有些暴力,如果有更好的寫法歡迎在評論區(qū)進(jìn)行分享。
????在看一些視頻的時候大家或許會注意到下面這些美麗的彈幕,但是在LuaSTG嘗試的時候卻不知道從何處下手。下面兩個例子中,菱形是由點彈和激光構(gòu)成的整體,傳送帶是由齒輪和鏈條構(gòu)成的整體,但是怎樣用“整體”的方法來制作這些彈幕呢。


????打開LuaSTG,我們新建了一個“整體”obj和用于連線的點和激光,在這個例子中我們將會用“整體”obj來控制點和激光的生成。自然我們很輕松的就做出了雛形。(其中激光的兩個變量“obj1”和"obj2"的意思是激光的兩個端點)

????下面我們會用到一點lua里面關(guān)于表的知識。眾所周知Luastg里面所有的對象都是obj,編輯器中也提供給obj一些默認(rèn)的“屬性”,比如self.bound為obj是否會出屏即消。事實上在LuaSTG中,"self"為obj本身自帶的一個表,而諸如bound這些則是表里的元素,除了obj默認(rèn)有的元素之外,我們也可以自己新建一些元素例如self.orz?=?true,在lua語言中,表里可以放任何東西,比如說一個obj。
????很快我們便寫出了下面的東西

????這里我們給“整體”obj新建了兩個元素self.no1和self.no2,用于儲存激光的兩個端點,last的意思為將兩個端點子彈儲存到self.no1和self.no2中,之后創(chuàng)造激光時我們就可以用self.no1和self.no2來給激光的兩個變量obj1與obj2賦值(只不過這個“值”并不是大家想的那種變量,而是一個彈幕,lua好神奇啊……)。
????整體和端點這部分是寫好了,然后我們開始寫激光部分。我們讓激光的頭在第一點上,角度指向第二點,長度為兩點間的距離,為了保證連線時端點存在我們使用IsValid來判斷。
????這里的obj1和obj2是具體的兩顆彈幕,所以可以直接用Angle和Dist這兩個函數(shù);也可以用彈幕里自帶的參數(shù),比如彈幕自帶的x,y坐標(biāo)屬性self.x和self.y,我們這里用obj1指代這個彈幕就可以寫obj1.x和obj1.y。


????這樣一個基礎(chǔ)的連線激光就寫好了,我們在boss的位置生成一個“整體”obj試試看

? ? 雖然很樸素不過連線激光的事我們完美解決了。
????這里的“整體”obj只是一種寫法,具體情況需要靈活運用,讓我們再寫幾個例子。(為了方便表現(xiàn)原理所以沒有對彈幕進(jìn)行潤色)




? ??????教程就到這里了,希望能幫到大家。