續上篇來講一些實際可能會遇到的問題(?) :
比方說我想要一顆星星在歌詞的字唱過去的時候從字的左上飛入右下飛出。
假設是從(x1,y1)飛到(x2,y2),飛行0.8秒(800ms)直覺上來寫可能就是move(x1,y1,x2,y2,t1,t2) (t1=start[i], t2=start[i]+800)
這樣子寫其實沒什麼問題,只是如此一來你星星的出現的控制將會只能這樣寫t(t1, t1 ,1, 1a&H00)也就是瞬間出現,因為在t1時間前星星是固定不動的,不能提早出現,而如果t1~t3 (t3=t1+200) 淡入的話,則會使看起來的移動距離變短,更何況還要加淡出效果。不過如果不介意繪圖指令圖形突然出現或消失,還是可以這樣寫。
如果想要整體不是那麼僵硬的話,在一開始初始設定時就要事先考慮到這些。
ps:只是示意一下,並不能在特效代碼的括號內運算,還有變數加$
例如move(x1-20,y1-20,x2+20,y2+20,t1-200,t2+200)
這樣就可以t(t1-200, t1 ,1, 1a&H00), t(t2, t2+200 ,1, 1a&Hff)來控制,整體會平滑許多,實際上還是會有一些地方需要調整
另外,如果移動時間其中有以offset[i]來定義,會出現唱得快的字的繪圖物件移動比較快的效果,好或壞視情況。
粒子效果就是控制一堆這種東西。利用for loop給予每個粒子他的移動、出現、消失、變化。
當需要控制的粒子很多,當然就會需要用亂數去設定參數,使其每顆粒子的移動都不相同。然而,完全以亂數來控制卻又難免讓字幕特效顯得雜亂。所以就要想到「可以控制整體的大方向,卻又在小地方做出差異」的方法來平衡。
以下就拿幾個我的拙作來展示:
86 OP2 境界線,沒回去看特效檔,當初就是把effect example裡的k-sakura原本往下掉的櫻花改成往上。應該就是先設定一個起始點,再移動到上面紅色箭頭的範圍,三角形區域就是可能往上移動的路徑。櫻花特效我的抄人。
鏈鋸人KICK BACK,點的初始位置隨機在紅框範圍(數量相當多,幾乎可以算填滿),移動到橘框時會完全出現,再飛往綠框並消失
鏈鋸人fight song ,從中心往兩側噴,但看不懂之前(寒假)在寫三洨了
暗影大人OP,如圖
春擬,以字的跑過時間為依據,把一個block切成超級多小block,一個小block一片櫻花往上飛
(然後那個時候把字體大小當高度用了)
Unravel,以字的位置(初位置)為中心,向外0.8~1.7倍block為半徑的圓形移動,所以可以看到英文字的碎片飛超遠。
末位置就用極座標來訂一個圓周,複習大一微積分。還好php有pi()這個function可以取到pi的值,不過不行也就直接用3.14。
看到社上那麼多人開始剪片,我好了。
好欸