IC編輯器_從入門到精通_第五章|我想成為創造者


3樓貓 發佈時間:2022-02-26 18:08:11 作者:Konux Language

第五章:觸發器
————————————————————
此章中,你將接觸到IC編輯器中最核心的區域:觸發器,IC的核心是編輯器,而編輯器的核心是觸發器,所以四捨五入來看,觸發器就是IC的靈魂。如果說場景中的單位是地圖的四肢,那麼觸發器就是地圖的大腦,它指揮著單位的運行,這是編輯器最最最厲害的功能,正是觸發器,可以使得IC擁有“2D遊戲微引擎”的美譽,使得IC可以製作平臺跳躍類型遊戲之外的2D遊戲。這是一個令人興奮的東西(同時也令人頭禿),幾乎在所有所謂“高級”的地圖裡,都會有觸發器的影子。

本章知識點如下:
· 觸發器的運行機制
· 觸發器的操作
· 常用事件
· 常用條件
· 單位目標類型
· 數據類型及其轉換
· 高階常用動作解釋
· 函數中的常見陷阱
· bug的檢查與調試
· 觸發器的學習方法
 
觸發器在哪?
學習觸發器之前,咱們得先會找到觸發器在哪,如下圖所示,位於數據編輯器中
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第1張其中會默認有一個觸發器:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第2張意思是當遊戲開始,就創建玩家角色,注意,不要隨便刪除這個觸發器,否則遊戲開始將會沒有玩家單位,即你操控的人物。
 
觸發器的認識
觸發器可以被認為是一個寫偽代碼的工具,當然這裡的代碼是中文的自然描述,字面意思比較好理解,不用擔心學不明白(Konux入坑時也是小白哦)。對於遊戲中特定事件,只要寫好具有對應事件的觸發器,若滿足觸發器條件,便有可執行一系列包含在觸發器中設定好的動作。
舉個生草的實際例子:
你在學習的時候,突然肚子一陣搗騰,很明顯你要上廁所了(事件觸發)
這個時候,你可不能直接跑去廁所,你需要先看看自己有沒有帶紙,如果沒帶紙就匆匆跑去廁所是非常危險的(條件判斷)
你發現你帶紙了,於是你拿起手機一路火花帶閃電的就衝進了廁所(動作執行)
 
觸發器的三大
事件、條件和動作共同組成觸發器
事件:
只有事件發生,相應觸發器才會被觸發(就像觸發器接收到了信號),若無事件,則不會自行觸發。
條件:
當事件發生時,若條件滿足,才能運行觸發器裡相應的動作,否則不運行動作,就像篩子的作用一樣。
動作:
觸發器觸發後具體要執行的函數組,相信這個你們並不陌生,在坑向教程中我們使用的最多的就是動作。
 
觸發器的操作:
我們對觸發器的操作類似於關卡,我們可以對觸發器進行新建、克隆(複製粘貼)、刪除、改名、添加類別(用於分類),長按一個觸發器或右擊(電腦端)即可顯示這些操作。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第3張值得注意的是觸發器有一個[關閉/開啟]操作,和動作類似的,這個操作可以使觸發器開啟或關閉,處於關閉狀態時,觸發器名會變成灰色,此時觸發器將不會自行觸發,所以其中的動作(函數組)也不會執行。

IC編輯器_從入門到精通_第五章|我想成為創造者 - 第4張什?你這都關閉了那還寫這觸發器幹啥?其實這是大有所用的,就像寫代碼一樣,我們的觸發器如果使用不當就容易出bug,有時候這些bug的位置我們都找不到,所以在檢查哪裡出問題的時候,就可以暫時將一些觸發器關閉,以排查出bug的位置,如果為了排查一個小bug而把整個觸發器都刪除,那就太蛋疼了。總而言之,當觸發器後續還需要用到,但目前不想讓它觸發時,就可以關閉觸發器。
左邊看完了,咱們再看看右邊,也就是觸發器的編輯區域了
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第5張相信右邊的7個按鈕大家相當熟悉,和我們做坑向時對函數的操作的按鈕是一樣的,從上到下依次為新建、修改、複製、剪切、粘貼、設置開啟或關閉、刪除。
這幾個按鈕可以對事件、條件、動作裡的函數做操作。此處注意,事件、條件和動作裡裝的都是函數,但它們屬於不同類別,比如事件裡的函數我們叫它”事件函數”,同理還有”條件函數”和”動作函數”。
 
實操入門:
OK!現在我們可以開玩編輯器了!
我們遊戲默認的一個觸發器如下,目的是當遊戲開始時,把主機玩家單位(散人)創建出來,這裡沒有寫條件函數,條件中,無條件函數就默認條件是滿足的。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第6張若不小心將“[系統函數]為所有玩家創建角色”函數給刪掉了,可在觸發器的動作中手動添加回去,注意函數編輯器左上角的類型為默認時,是看不到系統函數的,所以我們需要改成全部,這樣我們能用的函數會多一些(函數編輯器裡的函數有重複的,這是教程版本的遊戲小bug,在新版裡已經修復,不用在意)。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第7張一般來說,默認的這個觸發器是不允許瞎改動的(對於新手),只允許在動作-為所有玩家創建角色函數後面寫函數。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第8張 
好,經典的第一步,開局輸出一段文本。
首先點擊函數[為所有玩家創建角色],點擊添加函數
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第9張我們找到“[信息面板]-添加信息”函數,點擊第一個參數,點擊常量,輸入:Hello World
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第10張IC編輯器_從入門到精通_第五章|我想成為創造者 - 第11張這樣就寫完了,我們運行遊戲試試看
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第12張成功了!當遊戲剛開始時,左下角的信息面板便顯示出了“Hello World”,這個信息面板可用於顯示你想顯示的信息,你可能會說這有啥用?先收起你的好奇心,咱們後文會再次提及。
 
製作碰撞傷害技能
什?你沒聽錯,咱們要使用觸發器,模擬製作一個碰撞傷害技能的效果
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第13張這個效果用觸發器可解釋為:
事件:當玩家碰撞
條件:判斷碰撞了誰
動作:殺死主機玩家單位
由於我們需要的事件不是默認觸發器裡的遊戲開始了,而默認觸發器不允許改事件,所以這時,我們應該新建一個觸發器,實際上,良好的觸發器習慣是一個觸發器只做一種功能,這在我們後期製作邏輯複雜的龐大觸發器時,會有非常多的優點。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第14張添加觸發器後給它命名為“碰撞傷害”就可以了,觸發器的名字可以任取,但還是建議取一個自己能看的懂的、對觸發器功能能進行準確描述的名字,這樣在觸發器較多時,才不會亂。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第15張接下來開始寫事件,點擊事件,點擊新建函數按鈕,找到“單位-玩家單位事件”函數,選擇碰撞開始,
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第16張碰撞事件如下所示,碰撞開始即剛撞上,碰撞持續即“親密接觸”,碰撞結束即離開
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第17張好了,事件搞定,接著寫條件,這裡我希望當碰到刺的時候,就運行動作,條件當然是判斷我們碰撞到的單位是個什麼東西了,點擊條件,添加函數
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第18張找到單位數據類型比較函數
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第19張還記得咱們之前提過的單位數據和單位的區別嗎?單位數據是“圖紙”,單位是依據對應圖紙造出來的個體,個體之間是不同的(就像人和人都不同),我們這個條件函數是對單位數據類型進行比較,也就是說判斷這個單位是用哪個“圖紙”生產出來的,而不是直接判斷單位,好了,根據這個條件函數,我們很顯然要設置第三個參數為刺的單位數據,點擊常量即可。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第20張中間的參數“==”是用來設置判斷等於(==)或不等於(!=)的,這裡我們需要判斷等於,所以不用更改。
第一個參數是設置需要判定的對象的,此處需要選擇玩家碰撞到的單位,那麼這玩意怎麼選擇呢?
一般來說,碰撞事件發生時,雙方單位其中一個是觸發單位(發起方),一個是目標單位(接受方),根據牛頓第三定律,力的作用是相互的,同理碰撞也是相互的,所以一個單位既是觸發單位也是目標單位,但是當其中的一個單位被確定時,另一個單位也就被確定了。比如咱們這個觸發器中,事件為玩家碰撞開始,那麼作為碰撞發起方的玩家,就作為了觸發單位,那麼它碰撞到的單位,就只能是目標單位了!所以咱們條件的第一個參數,就填目標單位即可。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第21張IC編輯器_從入門到精通_第五章|我想成為創造者 - 第22張現在事件和條件咱們已經寫好了,就只差動作了,我們添加一個殺死主機玩家單位的函數即可。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第23張這樣我們的觸發器功能就做完啦!
我們把刺的碰撞傷害技能給去掉,然後運行遊戲試試!
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第24張成功了!如果我們需要控制多種類型的單位有傷害,又該怎麼做呢?如下所示可以嗎?
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第25張運行後發現我們刺的傷害都沒了,咱甚至可以用鐵菊站上去(

IC編輯器_從入門到精通_第五章|我想成為創造者 - 第26張這是為啥呢?實際上,如果條件裡放了多個函數,那麼默認表示為所有條件都滿足的情況下才運行動作,但是很顯然,目標單位是確定的一個單位,它只有一個確定的單位數據類型,它不可能同時滿足以上兩個條件,所以此觸發器永遠不會執行動作。要解決這個問題,我們需要使用一個常用的條件函數“任意條件成立”,表示只要滿足其中的一個條件即可運行動作,把想要的條件放入此函數中即可。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第27張IC編輯器_從入門到精通_第五章|我想成為創造者 - 第28張這樣,我們的函數就能正常工作了!
 
大概一個觸發器就是這樣寫出來的,可以看成是拼積木,而此處的積木是由代碼構成的,我們不需要關注代碼上的細節,只需要會把積木拼成大廈就可以了,由於觸發器裡涉及到大量的函數,咱們不可能一一講解用法,但是後文會給出常用的一些函數以及觸發器的學習方法給大家指路。
 
常用事件:
[[b]遊戲]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第29張遊戲開始:當遊戲開始時觸發(注:死亡重新載入也會觸發此事件,因為死亡重載實質上就相當於退出地圖再重進地圖,而進入地圖就可以認為是遊戲開始)
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第30張遊戲開始(延遲)在遊戲開始事件之後緊接著觸發,注意此處的延遲極短,遊戲開始和遊戲開始(延遲)都是在同一幀(1幀時間不固定,比如60幀時,就相當於1/60 = 0.0167秒)內運行,只不過是分先後順序罷了。
遊戲幀數更新:當遊戲每次幀數更新時觸發,時間不穩定,若玩家設備幀數設置為60幀時,則此事件大概每過0.0167秒觸發一次,但是幀數是在不斷上下變化的,所以這個時間也沒有固定值,有意思的是,當遊戲暫停時,此觸發器會繼續觸發,因為遊戲暫停時,幀數是不會暫停的,依據這種特性,我們可以在遊戲暫停時搞些操作。
遊戲物理幀更新:每過固定時間0.02秒會觸發一次,因為物理幀固定為0.02秒。
遊戲暫停、遊戲恢復:顧名思義,當你按下返回鍵時遊戲暫停事件觸發,當由暫停狀態回到遊戲裡時,恢復事件觸發。
 
[[b]單位]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第31張單位事件、玩家單位事件和任意單位事件,比如咱們都是判斷單位碰撞開始,單位事件是指定一個在場景中的單位(常量)碰撞開始,玩家單位事件是指定主機玩家單位碰撞開始,任意事件是只要有單位碰撞開始了就觸發。
有同學可能喜歡舉一反三,立刻想到,這個玩家單位事件有啥必要呢?咱們用單位事件也能做呀!如下
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第32張然後咱們運行試試看!
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第33張遊戲直接報錯了,這是為啥呢?咱明明很對嘛?其實呀,所有事件函數有個特性,就是不能使用變量或函數作為參數,其中的參數只能使用常量,咱們由於使用主機玩家單位函數作為了參數,所以這裡就會報空,所以我們如果要判斷玩家單位的事件,就需要使用玩家單位事件函數。
我們可以看看單位事件可選的有哪些
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第34張好像還挺多的,這裡講幾個不好理解的,其他的可以自行嘗試即可
初始化:即單位剛被創建時觸發,一個單位在其生命週期內只會觸發一次初始化事件(就像人一生只能出生一次一樣,什?你說你是龍王轉世?那沒事了噢...),不僅僅是用函數創建的單位會觸發初始化,擺放在場景中的單位也同樣會觸發,其實當關卡一開始時,是沒有單位的,你擺在場景中的單位也沒有加載,只有單位加載完後,你的單位才會被創建到場景中,所以在剛進入關卡時,我們擺放的單位才會“出生”,也就會觸發初始化。
交互:需要按[O]鍵的地方就有交互,比如進傳送門、存存檔,這些時候按[O]鍵即可觸發交互。
控制鍵輸入:咱們按[A][D]鍵左右移動,按[O]鍵交互,按[R]鍵重生,按[K]鍵使用道具等,都叫控制鍵輸入,如果改鍵了,也成立,比如將[A][D]改成了[←][→],那麼相應的控制鍵就是[←][→],手機端觸屏按鍵也可同樣觸發控制鍵。和碰撞類似,控制鍵按下時叫輸入開始,持續按住控制鍵時叫輸入中,鬆開控制鍵時叫輸入結束。需要注意的是,控制鍵是位於玩家單位上的,所以如果沒有創建角色,那麼控制鍵將不會被觸發,即使你按了控制鍵。
 
[[b]關卡]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第35張當進入關卡(新)當玩家剛進入關卡時就觸發,遊戲開始時可觸發
當進入關卡:當玩家被傳送進入關卡時觸發,遊戲開始時不觸發
當離開關卡:當玩家從該關卡被傳送走時觸發
 
[[b]計時器]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第36張時間消逝:觸發器被開啟後過給定秒數觸發,觸發器若默認開啟,表示遊戲開始後經過指定秒數觸發。
時間消逝_循環:每過指定的秒數觸發一次,有點像內部計時器的功能
 
[[b]輸入]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第37張任意按鍵按下:字面意思,鍵盤上的任意按鍵按下時觸發
任意按鍵彈起:字面意思,鍵盤上任意按鍵鬆開時觸發
注意,如果是想要玩家左或右移動、使用道具、交互時觸發,不可使用按鍵事件,因為電腦玩家如果改了按鍵,輸入的按鍵將會判定錯誤,應該使用上面講的“玩家單位控制鍵輸入開始”事件,一般來說此事件用於地圖的電腦端操作。
 
[[b]聊天輸入]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第38張聊天信息輸入也分為輸入開始、輸入中和輸入結束,聊天信息指的是我們按[Enter]鍵或輸入鍵(手機端)時彈出的聊天輸入框裡的信息輸入,一般來說,用的最多的是輸入結束,即信息寫完之後再次按[Enter]鍵或輸入鍵發出信息時,此時我們可以通過一些函數來獲取到玩家聊天裡的內容,這就是有些地圖在聊天中輸入一些指令就可以執行一些操作的方法。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第39張 
常用條件:
條件函數的返回值為布爾值,它是一種數據類型,數據類型是啥?目前暫且不做解釋,後面講動作時會詳細寫明。布爾值其實你可以認為它只能是0或1兩種值,其中1表示真(True),0表示假(False),對於條件的判斷只有條件成立或者條件不成立,不可能產生一種成立但又不完全成立的條件。布爾值為真時就表示條件成立,為假時表示條件不成立。
現在我們為了方便,引入兩個邏輯運算符(就像+ - * /一樣的東西)來表示條件之間的關係
與運算符:&&
A && B 表示A與B,意思是隻有A和B都為真時,A && B才為真,否則為假
真 && 真 == 真
真 && 假 == 假
假 && 真 == 假
假 && 假 == 假
或運算符:||
A || B 表示A或B,意思是A和B中只要有一個為真,那麼A || B為真,否則為假
真 || 真 == 真
真 || 假 == 真
假 || 真 == 真
假 || 假 == 假
上面的等於號是雙等於“==”,這個用於表示等式兩邊的值是相等的,而如果表示兩邊的值是不等的,就需要用不等於號“!=”,條件等式左右兩邊的值可以互換,並不會影響結果。
那麼單等於號“=”呢?我們稱其為賦值號,賦值號的左邊放需要被賦值的變量(稱為左值),右邊放賦的值(稱為右值),比如a = 1,就表示將1這個值給變量a,那麼a就會被賦值為1,而1 = a這種說法是沒有的,因為1是常量,是個確切的數,不可變,所以我們是無法給常量賦值的。
 
[表達式]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第40張所有條件成立:
字面意思,即此函數中包含的所有條件必須都滿足才能成立
可表示為A && B && C && … ,所有條件成立就是“與”運算
任意條件成立:
字面意思,即此函數中包含的所有條件只要任意一個滿足就成立
可表示為A || B || C || … ,任意條件成立就是“或”運算
布爾表達式:

此表達式用於判斷等式兩邊的布爾值是否相等,若相等,則此表達式為真,否則為假,表達式為 A == B,雖然第二個參數“==”可以改為“!=”,但是咱們不需要改變第二個參數,因為“!=真”就是“==假”,“!=假”就是“==真”,我們只需要改第三個參數的真假即可。
此條件函數常用於“條件取反”,比如我們需要判定“當玩家是活著的”,但是咱們只有判斷玩家是死亡的函數,所以我們可以利用表達式寫為“當主機玩家單位是死亡的 == 否”,玩家不是死的,那不就可以表示玩家是活的嗎?
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第41張 
[[b]關卡]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第42張關卡條件函數只有一個關卡比較,很顯然,此條件用於判斷等式兩邊的關卡是否相等,通常我們可以使用當前關卡 == ***來判斷玩家所在當前的關卡,如果要使用觸發的關卡 == ***,就需要配合進入關卡事件才能起效。
 
[[b]字符串]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第43張常用的是字符串比較和字符串包含。
字符串比較即對等式兩邊的字符信息進行比較,若完全相同則為真,否則為假。
字符串包含即判斷一個字符串中是否包含有一個字符串,比如字符串“Konux真帥”中包含“真帥”字符串,不包含“真醜”字符串。
還記得我們在事件中提到的聊天輸入結束函數嗎?咱們可以和此條件配合使用,來做判斷聊天輸入的字符串是什麼,從而完成類似於輸入指令一樣的操作效果。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第44張啊對,上面觸發器的效果是當你輸入“Konux我好愛你啊!!!”那麼遊戲就能通關,不過咱不建議你利用這個東西來通關自己製作的自己過不去的難圖併發布,如果你的地圖是無解的,那麼管理會進行扣分!我們應該製作自己能通關的地圖,而不是為難而難,為了迫害別人而製作的地圖,因為往往這些地圖都是低下載低點贊低關注。
 
[[b]數學]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第45張概率成立:分為實數和整數,實數概率函數的參數可以是小數,而整數概率函數只能是以整數作為參數,一般來說實數就夠用了。此條件以一定的概率成立,比如50%的概率成立,就是指此條件為真或假的概率都為1/2,此條件常用於製作概率性的動作函數。
整數比較:判斷兩個整數間的大小關係,可選的關係為“==”、“!=”、“>”、“>=”、“<”、“<=”。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第46張實數比較:和整數比較類似,判斷實數(也就是小數)之間的大小關係。
需要注意的一點是,實數之間不能進行“==”或“!=”比較。
因為實數在計算機(手機也一樣)中不能被精確表示,咱們的內存空間是有限的,而有些實數是無限小數,內存中不可能存放這個數字的每一位,所以就會對實數進行舍入,這就會造成舍入誤差,又因為計算機中的數字是以二進制的形式儲存的,所以對於大多數十進制實數來說,轉換為二進制後基本上都是無限循環小數,這個誤差不可忽略。
如果我們需要判斷兩個實數a和b是否相等,就必須要規定一個誤差來判斷,比如Konux習慣用|a - b| < 0.005來判斷兩個實數是否相等,左邊表示a和b的數值差,右邊表示自己規定的精確度。
剩下的四個函數用的非常非常非常少,幾乎沒有什麼作用,所以這裡不講。不過這裡需要提一嘴二維向量比較函數為啥沒用,因為此函數只能進行“==”或“!=”比較,而二維向量就是由兩個實數構成的量,我們知道,實數不能直接比較,所以這個函數也沒有用。如果需要比較兩個二維向量的大小,就需要用實數比較,當二維向量a與b之間的距離 < 0.005時,就表示a和b之間非常接近,就可以認為兩二維向量相等了。
 
[[b]輸入]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第47張輸入條件函數用的最多的是按鍵比較2,由於此函數是比較“觸發的按鍵”與期待按鍵是否相等,有帶“觸發”字樣的條件,一般都需要配合相應的事件才能生效,因為只有事件才能觸發,所以此條件需要搭配[輸入]事件使用,注意按鍵輸入是電腦端玩家才能用的,雖然手機端也勉強可以用,但是不推薦。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第48張可能這裡有人又要開始槓了,觸發區域裡也是可以用觸發單位作為條件的,這咋沒看見事件呢?

IC編輯器_從入門到精通_第五章|我想成為創造者 - 第49張上圖右邊藍字是觸發單位函數的官方解釋:相應事件的觸發單位。很明白了是需要事件的,但是觸發區域的技能“運行動作”裡只能寫動作,不存在事件的說法。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第50張IC編輯器_從入門到精通_第五章|我想成為創造者 - 第51張這裡Konux告訴你,其實“運行動作”技能可理解為是一個隱藏了事件和條件的觸發器,這個事件是默認已經寫好的,而條件則表現為了技能的屬性,那麼這個技能用觸發器該怎麼表示呢?如下
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第52張目標單位就是裝有此技能的單位,而觸發單位類型可在技能裡設置,Player就表示玩家
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第53張明白了嗎?觸發區域為啥名字中帶觸發,就是因為本質相當於是個觸發器。
 
[[b]單位]
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第54張對單位的條件判斷都是字面意思,某些用的很少的函數和一些一看就知道是啥的函數這裡不講,下面將一些比較難懂的函數來解釋一下
是邊界牆:判斷單位是否是邊界牆,邊界牆就是包圍關卡的牆,如下所示,邊界牆分上下左右四塊
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第55張這些黑色的障礙物就是邊界牆了,它們是一種很特殊的單位,當然其實邊界牆是白色的,但遊戲中設置了此單位的顏色為黑色。
單位目標類型比較:我們之前講過單位數據類型比較,單位數據是“圖紙”,單位是圖紙造的零件。而這個目標類型比較是個啥呢?目標類型也是單位的一個屬性,來看:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第56張咱們打個簡單的比方,一個個不同的單位就像學校裡的一個個學生一樣,每個學生都有他們的班級,而單位的目標類型就可以認為是單位所屬的班級班名,單位默認的目標類型是沒有的(也就是空:Null),單位可以沒有班級,而有些編輯器自帶的默認單位有目標類型,默認的障礙物(牆、隱藏磚塊、淤泥、反彈磚塊等)的目標類型為Obstacle (注意大小寫要正確),中文意思是障礙,玩家發射的子彈的目標類型為PB (Player’s Bullet),中文意思就是玩家的子彈。
那麼這個目標類型有什麼用呢?我們先打開玩家子彈的技能看看。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第57張IC編輯器_從入門到精通_第五章|我想成為創造者 - 第58張子彈擁有三個技能,碰撞傷害用來給目標單位造成傷害,碰撞死亡用來使子彈碰到目標單位時刪掉自身,重置死亡使玩家在重置遊戲時讓子彈刪除。打開碰撞傷害技能看看
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第59張這個技能的影響目標類型為Monster,這是個啥?好像從來沒見過,中文直譯過來就是怪物的意思,也就是說,只有玩家子彈碰撞到目標類型為Monster的單位才會對它造成傷害,技能中的影響目標類型(或目標類型)是用來設置技能對誰生效用的,還記得咱們磚的目標類型為Obstacle嗎?如果將磚的目標類型改成Monster,那麼玩家子彈就能將磚塊給射死。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第60張同樣的,你也可以將玩家子彈的碰撞傷害技能的影響目標類型改成Obstacle,也能達到這個目的:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第61張但由於Obstacle目標類型太常見,容易使子彈“誤殺”,所以不太適合這麼做。我們如果希望對單獨一個單位造成傷害,而不對其他單位造成影響,就可以自己定義一個目標類型,比如我自己在單位上定義一個目標類型為Konux
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第62張如果要對這個磚塊造成傷害,只需要將玩家子彈的碰撞傷害技能的影響目標類型改成Monster,Konux即可,表示該技能對目標類型為Monster或Konux的單位都起效,注意,寫多個目標類型時,需要用英文逗號連接,中文逗號不行哦。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第63張另一個例子,我們的存檔點(IW)的保存復活點技能裡,設置了碰撞保存目標類型為PB,所以咱們玩家的子彈才能存檔。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第64張還有我們的射擊型按鈕也是如此,其技能裡影響目標類型為PB,所以子彈可以觸發此按鈕。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第65張 
向量在單位內:向量這裡指的就是二維向量,而此處你可以理解為座標,雖然向量和座標不是一個概念,但在編輯器中你仍然可這麼理解它,因為座標就是起點位於原點(0,0)的向量。所以此函數用來判斷一個座標點是否在單位內。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第66張如上圖,白點的座標就位於單位內,而紅點的座標則在單位外。
 
單位在單位內:用於判斷單位和單位是否相交,如下這兩個單位就相交了,這就是單位在單位內。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第67張 
是水平反轉的:用於判斷一個單位是否是水平反轉的,常常用於判斷玩家,如下,左邊的Kid是初始狀態的方向,右邊的Kid就是水平反轉的,所以檢測玩家的左右朝向時,就可以使用此條件判斷,垂直反轉也是同理。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第68張 
最後按下的控制鍵比較:用於判斷玩家最後操作了什麼控制鍵,比如玩家使用道具、左移、右移等等操作,由於此條件是判斷最後按下的控制鍵,而我們前面講最後創建的單位時講過,“最後單位”的獲取是不能加等待的,否則就可能出現問題,這裡也同理,最後按下的控制鍵一定是即時即用的,所以也要搭配控制鍵事件使用,如下:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第69張控制鍵比較是手機、電腦端都能用的,所以一般做地圖如果希望手機電腦端都能玩,就得使用控制鍵判斷,而不採用按鍵輸入判斷,按鍵輸入判斷僅用於給電腦端除控制鍵按鍵以外的按鍵做處理,比如電腦端玩家按[Z]鍵(沒有改鍵),而遊戲內對此鍵無定義,咱們可以寫按鍵輸入觸發器給[Z]鍵寫一個功能,此功能只有電腦端玩家能用,因為手機端玩家可沒有實體鍵盤。
 
數據類型及其轉換:
太好了!終於進入到了數據類型的教學,這裡可能會涉及到一點點編程方面的知識,當然這些東西是幫助你理解,而並非需要去掌握的,所以如果看不懂也可以接著看下去,直接看結論就可,接下來咱們先從最基礎的數據類型開始講解。
眾所周知,任意一款軟件,都是以二進制(滿2進1,十進制是滿10進1)的形式跑在機器上的,遊戲裡的數據,在底層裡也是被翻譯成了二進制的0和1,比如整數,在內存中是以二進制形式儲存的,整數8,二進制就是1000,整數5,就是0101,由於我們的數據存在內存中,每個數據會給定一個空間用來存放,所以這就造成了數據空間是有限的,就像一個房子空間有限一樣,裡面能容納的人也是有限的,所以數值型數據會有一個範圍,並不是可以無限大的,下面介紹幾種數值數據類型。
 
整數(int)
整數就是-1、0、1、2這種數,相信在座的各位大聰明應該在上輩子就學過了,在我們的編輯器中,整數在內存中佔用4*8 = 32個比特(bit)位,啥是bit?其實就是二進制位的意思,就像十進制裡114514是6位數一樣,bit用來表示二進制的位數,32個bit位就像下面這樣:
00000000 00000000 00000000 00000000
表示十進制的1023,二進制可寫為:
00000000 00000000 00000011 11111111
所以什麼情況下,此二進制值最大呢?就像固定三位數空間內999是最大值一樣,在二進制整數中,最大的數字就是全1:
01111111 11111111 11111111 11111111
咦?為啥左邊第一位是0?因為這裡的整數分正負,而最左邊第一位我們稱為符號位,為0時表示正數,為1時表示負數,它只表示值的正負,不表示數值大小,所以整數最小值就是:
11111111 11111111 11111111 11111111
可能這樣不太直觀,我們將這個最小值和最大值換成十進制:
整數範圍為-2^31 到 (2^31)-1,其中31次方就是因為數值位是32-1位,計算一下這個數值就是-2147483648到2147483647,如果整數超出這個範圍,就叫做數值溢出。那麼數值溢出會咋樣呢?如下圖所示,其實整數數值結構是個圓,沿著逆時針方向增大。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第70張由圖可知:
0 + 1 = 1
1 + 1 = 2

2147483647 + 1 = -2147483648(數值溢出)
-2147483648 + 1 = -2147483647

-1 + 1 = 0
 
好了接下來做個總結:
1.整數的值的範圍是-2147483648到2147483647
2.在寫觸發器時要儘量避免超出整數範圍,否則會造成數值溢出。
 
實數(float):
實數就是小數,有小數點的那種,比如3.1415926就是個實數,實數可以直接表示,也可以使用E記法(科學計數法)表示,比如實數114500000.0等於1.145*10^8,那麼其E記法表示為1.145E+8,這裡的E就是代表以10為底,+8表示10的指數,1.145為小數部分,注意E記法不能出現空格!
下面給出一些E記法在編輯器中的正確例子:
0.123e3 == 1.23E+2 == 123.0
0.123e-3 == 1.23E-2 == 0.000123
.123e3 == 1.23E+2 == 123
10.123e3 == 1.0123E+4 == 10123
 
當然了,實數也有它的範圍,由於解釋起來不容易理解,所以就不給推導過程了,對實數類型的內存結構有興趣的同學可以自行搜索:float 結構。
實數的取值範圍如下:
[-3.4028235E+38, 3.4028235E+38]
更精確的範圍應該是:±340282346638528859811704183484516925440之間
 
實數的儲存大小也是4*8 = 32bit,雖然和整數佔用的空間一樣,但是實數的儲存結構比整數的要複雜,它們是完全不同的,你會發現雖然實數佔用的空間和整數相同,卻能表示比整數多得多的值,這不科學,同一房間裡怎麼會因為裝人的方式不同而容納更多的人呢?根據信息論來說,實數能表示這麼大範圍的數值,那麼一定是捨棄了什麼,這裡Konux告訴你,其實是捨棄了精度,各位想想,不就是裝人嗎?這人的胳膊、腿、肚子等等咱都不要了,就剩個頭來表示人,這樣有限的空間裝的人就會變多(這個比喻好像挺精汙)。這下知道為啥實數不能直接“==”比較了吧,因為實數是“殘缺不全”的,或者是不精確的!
 
好了接下來做總結:
1.實數可以直接表示,也可以用E記法表示
2.實數的取值範圍是:[-3.4028235E+38, 3.4028235E+38]。
3.實數並不精確。
4.實數的精度能保證至少6-7位有效數字是準確的。
5.若實數超出範圍,則會顯示±Infinity(無窮),所以應控制實數不超此範圍
 
字符串(string):
在介紹字符串之前,我們先介紹一下字符(char):字符指類字形單位或符號,包括字母、數字、運算符號、標點符號和其他符號,以及一些功能性符號(這是百度上粘貼下來的)。
 
這啥?真是不講人話!通俗一點,像‘a’、‘5’、‘我’、‘%’、‘ ’(這是空格) 、‘+’等等就叫字符,字符是單個的,而且需要打上單引號,比如‘5’是字符,而5是數字,這兩個是不同的數據類型。
認識完字符,那麼字符串也就好說了,就是把字符連成一串嘛,我們這個教程中說的每個句子,都是字符串,比如“這個教程真棒! 學廢了學廢了(”就是一個字符串,字符串需要用雙引號表示。
 
如果我們需要獲取字符串中的某個字符該怎麼辦呢?
其實啊,字符串就像字符排成的長隊一樣,字符都是有下標的,下標是啥?簡單來說就是咱們去某些飯店裡拿的排號,我們是第幾號,就表示我們是第幾個吃,字符串裡的字符手裡拿的號碼就是它們的下標:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第71張字符串的下標從左到右,從0開始依次遞增,上圖字符串中,下標0的字符是‘這’,下標14的字符是‘(’,下標7的字符是‘ ’(空格也是字符哦)。
 
布爾(bool)
布爾數據類型應該大家已經不陌生了,條件判斷函數的輸出類型就是布爾,布爾只有兩種值:True或False,編輯器中中文化為真和假,布爾類型用於判斷一個條件是成立的還是不成立的,如果成立,則為真(True),如果不成立則為假(False)。
 
二維向量(Vector2)
因為咱們遊戲是2D的,三維向量幾乎用不到,所以以後說到向量一般就是指二維向量。
二維向量,又稱平面向量,平面向量是在二維平面內既有方向又有大小的量,物理學中也稱作矢量,比如力就是個矢量,應該初二物理就學過了。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第72張在數學上,向量在x - y座標系上表示為這樣:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第73張如圖就是一個起點為(1,1),終點為(4,2)的向量,向量的模(大小)為:
 
就是勾股定理,當然這種方式不太直觀,另一種直觀的說法是,向量的大小的值等於向量的長度(雖然這個說法並不科學)。看起來有點麻煩,是嗎?但好消息是,編輯器中的向量的起點都位於座標原點(0,0),所以用向量的終點(x,y)就可以表示一個向量,所以正好向量的值就等於座標的值:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第74張所以在編輯器中,向量就可以理解為座標(座標其實也是向量),以下將部分函數的描述做解釋
向量之間的角度:座標之間的角度
向量之間的距離:座標之間的距離
向量計算:座標計算
比如向量(a, b) ± (c, d) == (a±c, b±d)
向量網格化:座標網格化
將座標“吸附”到規則的0.64網格座標上
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第75張如圖所示,紅點座標網格化後會變成綠點座標。
 
當然了,數據類型遠遠不止上面這幾個,找到全局變量函數,就可以找到所有的數據類型了。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第76張以上講的數據類型是最基礎的且最難的數值數據類型,其他的大多數數據類型屬於複合數據類型,我們使用時僅用於指代而不涉及計算,所以很簡單。
 
數值數據類型之間的轉化:
數值數據類型之間為啥要轉化呢?其實就像多頭充電線一樣,函數的參數只接收一種數據類型的數據,不同的函數的參數能接收的數據類型是不同的,所以原始的數據類型只有經過轉換之後才能用。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第77張比如血量、遊戲資源、遊戲時間都是實數,而我們希望用一個整數來設置這些量時,就必須進行轉換,比如有一個名為time的整數變量,想讓遊戲時間等於這個變量,就需要設置遊戲時間 = 轉換time為實數,一般對數字進行轉換相關的函數都位於數學類。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第78張 
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第79張 
整數轉化為實數:
此轉換很簡單,比如整數9,轉化為實數就是9.0。
實數轉化為整數:
實數轉化為整數有點東西,比如實數9.0轉化為整數就是9,如果8.9轉化為整數呢?其實會轉換為8,實數轉換為整數時,整數只取實數的整數位,不關心小數位,不是四捨五入,四捨五入有另外相關的函數,比如-3.99,取整之後為-3,我們稱此種取整方式為“向零取整”,實數取整符為[],比如[-3.99] == -3。
布爾轉化為字符串:
布爾的值為True或False,所以轉換為字符串之後就是“True”和“False”,不是“真”和“假”哦,真和假只是編輯器中文化過的。
整數轉化為字符串:
很簡單,比如整數10,轉化為字符串後就是“10”,包含‘1’和‘0’兩個字符,下標從左到右依次為0和1。
實數轉化為字符串:
和整數轉化為字符串類似,比如實數3.1415,轉化為字符串之後就是“3.1415”,這是一個含有6個字符的字符串。
二維向量轉化為字符串:
二維向量一般表示為(x,y),所以字符串也是這樣表示的,比如向量(0.64,1.28),轉化為字符串後就是“(0.64,1.28)”,11個字符的字符串。
 
高階常用動作:
變量:
經過上面對於數據類型的“薰陶”,你應該能懂,變量可以指代某個數據類型的某個數據,變量分為兩個部分,變量類型和變量名,變量類型用來表示變量裡存放的數據類型,變量名則是變量的“外號”,方便我們以後要用這個變量時,可以叫它。變量名中可以寫英文、中文、日文、數字字符、各種符號,不過為了變量名字的可讀性,建議使用純英文寫法,若不會英文,可使用純中文寫法,比如咱們要設置一個實數變量表示最小時間,英文可寫為minTime,這裡的變量命名採用的是“小駝峰”法,即第一個單詞開頭小寫,後面的單詞開頭大寫,如果用純中文,命名為“最小時間”也可以。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第80張正是因為全局變量可以指代數據並可進行計算,所以變量是極其重要的,變量是觸發器各功能模塊之間的“信使”,觸發器A中得出的數據,通過全局變量傳送給觸發器B,這樣觸發器之間才能相互協同配合。
對於變量的學習,可以看官方文檔教程:
https://easydoc.net/s/85829661/USXlrH6u/N2QX5DlZ
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第81張看教程時,要著重瞭解全局變量,單位變量,變量的自身運算,數組和二維數組。
咱們這裡做一下補充,由於之前一直講的是全局變量,所以就不講了。
 
單位變量:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第82張單位變量比全局變量多了一個參數,那就是要選定一個單位,單位變量就像是單位身上的屬性一樣,只在此單位上才能用,在其他單位上不能訪問此變量。

要獲取單位變量的值,就需要點擊變量,找到[從單位變量中獲取]函數,填入需要獲取的單位,然後填入對應單位上的單位變量名即可。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第83張 
數組:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第84張數組的概念其實你應該不陌生,字符串就類似於數組,字符串裡有很多個字符,這些字符組合而成的字符串就是字符數組,而廣義上的數組是裡面裝有同一數據類型的多個變量所組成的東西,所以數組也有下標,和字符串類似。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第85張如上所示的二維向量類型的數組的函數寫法如下:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第86張此數組名為var,那麼數組有什麼好處呢?因為我們設置全局變量也能達到同樣的效果,比如下面這樣:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第87張用變量名來表示下標,其實這是四個獨立的變量,而不像數組那樣把變量裝進一個組裡,數組中的元素之間彼此相連,數組的優點是裡面的元素之間可以相互訪問,比如我們想從數組下標0的變量訪問下標1的變量,直接將下標+1即可,而不用手動選擇變量,因為數組元素之間是有關聯的。
二維數組:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第88張同數組(一維數組)類似,二維數組只是在一維數組的上面加了一層維度而已,所以其需要用兩個下標表示:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第89張其中橫向的下標記為下標i,縱向的下標記為j,紅色部分數字就是數組裡裝的變量的值。
二維數組下標表示為arr[j],其中arr是數組名,表示數組的橫向下標,[j]表示數組的縱向下標。所以比如圖中整數10可以表示為arr[0][0],47表示為arr[3][1]。一維數組是線性結構,所以用一個下標就可以表示它裡面的每個變量,二維數組是平面結構,所以需要兩個下標確定一個變量。
 
註釋
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第90張註釋是個很重要的函數,雖然它對觸發器一點都不重要。註釋函數里可以寫一些東西,此函數在地圖運行時不會執行,它就是給作者自己看的,有時候我們的觸發器會寫很多內容,寫到甚至自己都記不清楚自己寫這個是用來幹啥的了,這個時候,合理的註釋可以讓我們知道自己寫的東西是用來幹什麼的,使觸發器具有“可讀性”,比如給大家看看Konux寫的觸發器(這是鬥地主的觸發器):
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第91張如圖所示,紅框部分都是註釋,用於給我自己看的,因為此地圖有53個觸發器,內容非常龐雜,所以一定要在寫一個功能時做註釋,不然可能就看不懂自己寫的什麼東西了。
 
For和while循環
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第92張for循環和while循環函數也是常用函數,一般來說while循環用的少(而且不太安全),只使用for循環就足夠。
for循環在官方文檔教程裡有我寫的非常詳細的介紹:
https://easydoc.net/s/85829661/USXlrH6u/g6uPc2oo
這裡就不詳細講解了,for循環主要應用於要循環做一部分函數組時使用。
比如我們上面的定義數組var的函數就明顯都是相同的步驟:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第93張所以用for循環可寫為:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第94張此操作和上面的等效,如果要定義114514個元素的數組,要用第一種方法一個個手寫可能需要寫到頭髮掉完,而用for循環,就只是改個參數的事,相當方便:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第95張 
單位組
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第96張單位組,和數組僅僅只差兩個字(???),所以他們有共同點,數組絕對不是隻能放數字,任何已有的數據類型都是可以裝的,比如單位。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第97張這差不多就算是單位組了,你看,裝的都是單位,而且是個數組,那不是單位組那是啥?實際上,單位組的底層結構就是這樣,只不過,單位組相關函數對數組進行了“封裝”,單位組幫你管理這些數組,我們不需要親自動手去操控數組,只需要用單位組函數下命令,單位組函數就會自動幫我們完成裝有單位的數組的操作。
在使用單位組之前,我們需要先創建一個單位組,並用一個變量表示它:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第98張因為我們獲取單位組的方式只有用“最後創建的單位組”函數獲取,和之前最後創建的單位類似,如果剛創建不用變量記著它,那麼很可能以後想用的時候就用不了了!
Ok,既然我們創建了單位組,那麼就要想給它加單位進去了:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第99張一般來說,單位組添加單位使用上圖所示的“添加關卡內所有單位(指定條件)”函數最好, 在條件裡,我們就需要描述我們選取的單位到底是什麼,在單位組中,其中的單位都叫選取單位(既不是自身單位,也不是觸發單位),所以這裡判斷選取單位的數據類型為牆1,那麼關卡內的所有牆1都會被選進單位組。
接著,我們get到了想要的單位進入單位組後,就需要對這裡面的單位進行操作了:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第100張如圖所示,使用“選取單位組內所有單位做動作”函數即可使這些單位同時做動作,這裡寫一個刪除選取單位,那麼關卡中所有的牆1就會被刪除。
需要注意,不能在“選取單位組內所有單位做動作”函數中的動作裡使用等待或計時器等具有延時的函數,否則會出bug,如果需要等待,那麼請將延時放外邊寫:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第101張IC編輯器_從入門到精通_第五章|我想成為創造者 - 第102張最後一點,還記得單位組的底層結構是數組嗎?數組有下標,單位組肯定也有,如果想選取單位組中某一個指定下標的單位,那麼可以使用下面的函數:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第103張 
遊戲
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第104張移動所有玩家單位到指定關卡:這函數直接說的大白話,可以將玩家傳送到某個關卡的某個座標處,如果存檔選擇是,那麼玩家重生將回到傳送之後的地方,如果存檔選擇否,那麼玩家重生將回到傳送之前時玩家的重生點處。
設置遊戲時間:此函數可設置遊戲的真實時間,通關時的時間就是真實時間,遊戲左上角的時間是資源時間,僅用於顯示。
增加遊戲時間:在當前真實時間基礎上,加上指定時間,注意,若此處填負數,那麼表示減少時間,即time + (-t) == time – t。
設置世界重力:世界的默認重力是(0,-14.5),表示x方向無加速度,y方向有向下為14.5的重力加速度,這是世界的真實重力,而單位實際所受的重力是(重力縮放*重力),重力縮放為1時就表示正常重力。
停止計時/恢復計時:字面意思,停止遊戲時間或恢復遊戲時間
暫停遊戲/恢復遊戲:字面意思,暫停遊戲時,大部分觸發器將無法觸發執行,單位都會被暫停,恢復遊戲時,會解除暫停遊戲造成的效果。
設置遊戲速度:可改變遊戲的速度,遊戲的實際時間也會跟隨遊戲速度變化,相當於變速。
勝利/失敗:使遊戲勝利或失敗,勝利函數可代替出口單位,常用於特殊玩法。
 
漂浮文字
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第105張漂浮文字用於在關卡中顯示你想顯示的話給玩家,官方文檔中有對於漂浮文字的教程:
https://easydoc.net/s/85829661/USXlrH6u/2JmpjztG
同樣的,由於漂浮文字被創建後,只能通過最後創建的漂浮文字獲取,所以我們的好習慣就是用變量給漂浮文字取別名,好讓我們以後使用:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第106張 
觸發器
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第107張運行自定義事件:使自定義事件觸發,啥是自定義事件?我們在觸發器的事件函數里可以找到自定義事件,這其實就是自己做一個名為某某的事件,當其他觸發器調用“運行自定義事件”函數時,則可以觸發此自定義事件。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第108張IC編輯器_從入門到精通_第五章|我想成為創造者 - 第109張註冊觸發器:就是另行開一個觸發器,此函數用的極少,由於其並不安全,所以儘量不用。
運行觸發器:指定一個觸發器並運行它,相當於忽略掉該觸發器的事件,直接觸發該觸發器,當然運行觸發器也是要判斷條件的,如果條件滿足,才會運行觸發器內的動作。
運行觸發器(無視條件)和上面類似,只是這條函數可以直接運行某個觸發器裡的動作,連條件都管不著
開啟/關閉觸發器:這是用函數的方式控制觸發器的開關,我們之前學過手動方法:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第110張所以如果觸發器被關閉了,可以用函數來打開!
 
虛擬按鍵
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第111張此類函數只作用於手機端,只有手機端擁有虛擬按鍵。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第112張顯示全部:顯示全部的虛擬按鍵
隱藏全部:隱藏全部的虛擬按鍵
顯示:顯示指定的單個虛擬按鍵
隱藏:隱藏指定的單個虛擬按鍵
需要注意,單個顯示只能和單個隱藏對應,全部顯示只能和全部隱藏對應,若全部隱藏了按鍵,則不能單個顯示,只能全部顯示。
需要注意一點,對虛擬按鍵進行操作時,不要在遊戲剛開始時做,因為遊戲剛開始時,虛擬按鍵還沒被加載,需要等至少1幀才能設置:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第113張單個顯示/隱藏函數中需要寫虛擬按鍵的名字,這裡給出相應的表格供參考:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第114張 
函數中的常見陷阱
此模塊會列舉一些觸發器中容易被坑的點,幫助新人避坑
 
1.變量不要輕易套娃,除非你技術夠好,以下是錯誤示範:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第115張 
2.for循環或while循環是在1幀內運行的,所以不要在其中加等待或計時器
 
3.能不使用局部變量就不使用
 
4.變量是有類型的,千萬不要將變量用到不屬於它的類型的參數上,如下錯誤示範:
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第116張此操作刪除單位,但這個變量不是單位,是整數,這個會造成遊戲的bug
 
5.記好你的變量名字,如果使用變量的時候不小心寫錯了(包括大小寫),這種情況不會報錯,所以你的地圖因為這個變量寫錯名字而出了bug會非常難排查。
 
6.計時器、觸發器裡不得使用自身單位
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第117張 
7.設置單位的有關物理的屬性時,不要在單位初始化時設置,因為此時單位還沒有加載物理屬性;或者在關卡/地圖初始化時,不要立即用單位組獲取單位,因為單位也沒有加載出來。所以如果你發現你的觸發器裡的動作沒有執行或出現問題,不妨在動作前加個等待0.0幾秒試試,等待是個好東西,能治很多病(
 
8.註釋是個好東西,在寫較大觸發器的地圖時,一定要用,不然你可能會後悔的
 
9.字符串如果是不存在的,那麼漂浮文字顯示出來會是Aikesi,千萬不要看到這個Aikesi就以為是遊戲作者埋的彩蛋,這隻能說明你寫的字符串出了問題。
 
Bug的檢查與調試
寫觸發器出bug是常態,這也是新手的必經之路,修bug修多了,才能成為高手!
1.如果遇見了bug,首先看信息面板有沒有報錯(爆紅字),如果爆了,那麼萬事大吉,這種bug是最好修的,因為往往信息面板會告訴你哪錯了。
2.信息面板爆紅後,往往觸發器有些函數會被標紅,這可能就是錯誤的地方,如果自行無法解決,可在遊戲群內詢問大佬們。
3.若信息面板沒有爆紅,但是運行的結果不對,這可能就是隱性bug,這種bug是不好修的,因為你不知道問題出在哪,但是你可以根據你寫的觸發器縮小範圍,逐個排查,如果不知道某一步會輸出什麼東西,信息面板就派上用場了,你可以將你的函數運行過後的數據,顯示到信息面板上,來判斷結果是否是你想要的。
IC編輯器_從入門到精通_第五章|我想成為創造者 - 第118張IC編輯器_從入門到精通_第五章|我想成為創造者 - 第119張注意信息面板的信息是從下往上看的
4.若複雜的邏輯問題出現了bug,請不要求助大佬,因為即使是他們,也不可能懂你的邏輯是什麼,大佬只能糾正你簡單的一些技術上的bug,只有你自己最清楚你的邏輯,所以請自行耐心排查bug,誰也幫不了你。
5.若是遇見閃退bug或卡死bug,請檢查你的觸發器是否運行了自己造成了死循環、是否是for循環是死循環、是否是變量類型匹配錯誤等。
 
觸發器學習方法
觸發器的學習從來都不是看幾個教程就能學會的,即使教程再詳細,也需要你多實踐才能有效,觸發器裡的函數可以通過看教程或問大佬解決,但是觸發器的思想,只能通過在實踐中悟到,所以如果想學好觸發器,請多做觸發器圖,多獨自解決bug,多獨自思考,在實踐中,觸發器使用的感覺會逐漸形成,Konux用了三年編輯器,現在明顯的感覺就是能明確的知道什麼東西能做,什麼東西做不成,什麼東西該用什麼觸發器做,這些都形成了一種本能,就像把觸發器完全握在手中把玩的感覺。
當初Konux入坑時,還沒有所謂的教程,此遊戲編輯器的教程非常稀少,所以當初是一步一步踩坑踩出來的,現在,教程幾乎滿天飛,大佬遍地走,資源非常豐富,學習的過程中,可尋求的資源有:本教程、官方文檔教程、b站一些up的教程、群內觸發器大佬,所以希望能看到此處的你,把握好現在的機會。
 
編輯器新手入門交流與討論可加入官方二群,群號:979717879

[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com