前言
這一周腦袋里都在想怎么實現拋物線運動,數學差的人真的傷不起,周末在家里試試自己能實現不。跟著Heart Beasts的教程已經過半了,其中又學到了一些東西,記錄下。
宏
從我自己理解來就是一個類似類的東西,只是這個東西不是給編譯器解讀的,而是給代碼讀的東西,比如想要在全局代碼中對一個數字映射成一個字母,那后續代碼中就可以使用這個字母來代表這個數字,可以用如下的代碼:
這時宏加強代碼語義化的作用,當然宏的用處應該不止這些,后續有遇到新的用法在做記錄。
腳本
筆記(二)中有提到腳本,是類似C#類的東西,在C#里面是用以下代碼:
static string[] StringArray (string Str1, string Str2)
其中可以Str1和Str2就是傳入參數的名字,在GML里面也可以做到,可以使用以下代碼:
這個的作用同樣是加強代碼的語義化,易讀性。
在教程中后期,為了加強腳本的復用性,將腳本原來兩個的兩個參數——橫向速度和縱向速度,優化成了一個參數,使用數組的方式來定義速度。
讓腳本變量speed_傳入的參數是一個數組,數組第0位代表橫向速度horizontal,數組第1位代表縱向速度vertical,然后在賦值的時候結合上文提到的宏,即speed_[h]是橫向速度變量,speed_[v]是縱向速度變量。
這樣可以提升執行效率?不是很懂,感覺理解起來稍微有點繞。
兩個新的方法/函數
得到圖層? ??
layer_get_id(layer_name)?
圖層可見性
layer_set_visible((layer_name, visible)
代碼示例:
var solid_layer = layer_get_id("Solid")
layer_set_visible(solid_layer, false);
上面代碼的意思就是將Solid圖層的id賦值給solid_layer變量,然后設置solid_layer為不可見。
當然也可以直接寫layer_set_visible("Solid", false)。注意一點就是false是可以改為debug_mode的,代表在正常運行中圖層會隱藏,在debug模式下圖層會顯示,方便調試。
取整函數
ceil(number)
可將參數轉變為整數,自動向上取整。
var Y = ceil(4.1);
var X = cei(2.6);
以上X Y分別返回5和3。
障眼法,實現只有一屏的地圖來回穿梭
要實現玩家對象從右邊穿過去,從左邊出現,或者從左邊穿過去,從右邊出來的效果
發現做游戲空間思維還是要蠻強的,何況這還是2D游戲。