jizz,久久这里只有精品26,国产精品自在拍在线播放,麻豆国产蜜桃臀视频在线观看 ,丁香五月情,琪琪永久无码爱搞搞

13888888888
當(dāng)前位置:杰姆小屋  -  本地文章  -  今日頭條

守望先鋒地圖工坊教學(xué)(守望先鋒地圖工坊入門教程)

2023/6/30 20:13:13

評論:0

瀏覽量:179

本文的目的是從0開始到入門。如果你已經(jīng)理解了地圖工坊是怎么回事了,那么本文可能對你幫助并不大。


我們先用幾個問題來“揭開”地圖工坊神秘的“面紗”:


   地圖工坊是什么?它是一個功能更多的自定義模式。

   地圖工坊能做什么?現(xiàn)階段,它可以做一些很有意思的玩法,相信你已經(jīng)體驗過地圖工坊的作品了。

   地圖工坊不能做什么?它不能脫離游戲的基本框架,例如OW限制了只能有12個玩家,地圖工坊并不能讓你的房間能塞更多人?,F(xiàn)階段它也不能替換模型,不能改變地形。

   地圖工坊在哪里?它不難找,新建一個自定義房間,打開設(shè)置,你就會發(fā)現(xiàn)一個大大的“地圖工坊”按鈕。地圖工坊所有的設(shè)置就在這里面了。


什么是規(guī)則


地圖工坊是由很多條“規(guī)則”組成的。規(guī)則是什么?你可以把它看做是一條一條的“條例”。當(dāng)“規(guī)則”該被運行的時候,它就會被運行。


舉個例子:在生活中,如果你上班遲到了,那么老板就會扣你工資。當(dāng)你早上鬧鈴響了,那么你就應(yīng)該起床了。這些都是生活中的“規(guī)則”。


規(guī)則由三個部分組成:事件,條件和動作。還是上面的例子,當(dāng)你上班遲到,并且今天不是休息日的話,那么老板就會扣你工資。這條“規(guī)則”中,“上班遲到”是事件,“今天不是休息日”是條件,“扣工資”則是動作。


那在游戲里怎么體現(xiàn)呢?例如,我們知道,DVA的核爆會對一定范圍內(nèi)的敵人造成傷害,那么,“機(jī)甲爆炸”是事件,“玩家在爆炸范圍內(nèi),且玩家和DVA是敵對關(guān)系”是條件,“造成傷害”則是動作。(PS:這里只是用“機(jī)甲爆炸”舉例子,讓你明白事件、條件、動作之間的關(guān)系)


總而言之,規(guī)則即是:當(dāng)某件事(事件)發(fā)生,且條件滿足時,就做一些動作。


編寫規(guī)則


相信你已經(jīng)知道“規(guī)則”是什么了,那么,接下來,我們就通過“規(guī)則”做一件簡單的事:讓玩家每次受傷時,回復(fù)10生命值。


過程其實很簡單:玩家受傷→回血。那么相應(yīng)的規(guī)則應(yīng)該是什么樣?


通過翻閱事件列表,我們發(fā)現(xiàn)有一個事件剛好合適:玩家受到傷害。那么我們就用它作為事件了。


我們并沒有什么特別的要求,所以不需要“條件”。


動作是給玩家回血。我們應(yīng)該用什么動作?通過翻閱文檔,我們發(fā)現(xiàn)了一個“治療”的動作。它需要選擇幾個東西:


   玩家

   治療者

   治療量


“玩家”就是這個動作的目標(biāo),即給誰治療。我們怎么讓游戲知道,治療的目標(biāo)是受傷的玩家呢?我們可以使用“事件玩家”。顧名思義,“事件玩家”指的是觸發(fā)事件的玩家。我們在上面使用了“玩家受到傷害”事件,那么,在這里“事件玩家”指的就是受到傷害的那個玩家。類似的,如果我們使用“玩家陣亡”作為事件,那么就可以用“事件玩家”來代指陣亡的那個玩家。


在本例中,治療者是誰并不重要,所以我們選擇“無”就行了。


最后,我們設(shè)定的治療量是10點,所以我們選擇“數(shù)字”,然后輸入10。


變量


沒接觸過編程的朋友可能會覺得這個東西有一些難以理解。但它并沒有想象中那么難。我們可以用數(shù)學(xué)來理解它。


例如我們有一個等式:y=x+1。在數(shù)學(xué)上,我們把x叫做自變量:當(dāng)我們放入不同的x時,y就不一樣。我們的“方程”只是定義了一個從x到y(tǒng)的過程。


在我們上面的例子中,我們有一條動作:給事件玩家治療10點生命值。這里面,“事件玩家”是一個變量——因為觸發(fā)事件的玩家可以有很多個。過程是給玩家治療。而10我們一般把它叫做“常量”——因為它不會變,無論是哪個玩家受傷了,治療量都是10。


當(dāng)然了,這只是變量最基本的概念。其實變量就像一個“盒子”,我們可以把東西放進(jìn)去,也可以把里面的東西拿出來。


在OW中,變量和常量統(tǒng)稱叫“值”。


實現(xiàn)“冰凍彈”


現(xiàn)在我們來寫一點更復(fù)雜的規(guī)則。我們希望讓麥克雷的子彈變成“冰凍彈”——被麥克雷打中的玩家,就會被冰凍住1秒。


同樣的,我們先想一想過程:玩家被麥克雷打中→把玩家凍住。


我們發(fā)現(xiàn)“事件”并沒有“被麥克雷打中”的事件。怎么辦?這時候就該讓“條件”出馬了。被麥克雷打是受到傷害的一種,所以“事件”我們可以繼續(xù)用“玩家受到傷害”。但是我們有一個附加條件:傷害的來源應(yīng)該是一名麥克雷玩家。


我們翻閱文檔,找到“攻擊方”可以代指傷害來源。但我們應(yīng)該直接拿它來做比較嗎?仔細(xì)想想,“玩家使用的是麥克雷”比較的應(yīng)該是英雄,而不是玩家。因此,我們繼續(xù)找找怎么知道玩家用的什么英雄。最后,我們找到了“英雄”這個選項。條件便是:英雄(攻擊方) == 英雄(麥克雷)


注意:等號的左右兩邊一定要是相同類型的,即類似事件玩家 == 英雄(麥克雷)是不正確的,因為左邊是玩家,右邊是英雄。正確的寫法是英雄(事件玩家) == 英雄(麥克雷)


動作應(yīng)該是什么?“冰凍”是官方提供的狀態(tài)之一,我們可以直接使用“設(shè)置狀態(tài)”。


   玩家

   助攻者

   狀態(tài)

   持續(xù)時間


“玩家”和上面一樣,使用“事件玩家”即可。助攻者即為“攻擊方”。狀態(tài)是“凍結(jié)”?!俺掷m(xù)時間”輸入“1”。


兩個“特殊”的事件


通過上面的內(nèi)容,我們已經(jīng)知道了規(guī)則是什么,以及基本都規(guī)則編寫。但你發(fā)現(xiàn),“事件”只有非常少的幾項。如果我們要做一些其他功能,例如,我們想讓玩家重生后馬上將他移到某個位置,無論是受到、造成傷害事件,還是陣亡事件,都不能滿足要求。這時候,就需要用到持續(xù)事件+條件了。


持續(xù)事件和其他的事件都不太一樣。其他事件都是“當(dāng)這件事發(fā)生時”,而持續(xù)事件則是“我會一直等著,直到條件滿足”。


例如,我們可以用“存活”來判斷玩家陣亡與否。而結(jié)合我們上面所說的持續(xù)事件,我們可以寫出這樣的規(guī)則:


   事件:持續(xù) - 每名玩家

   條件:存活(事件玩家) == 真


這是什么意思呢?根據(jù)上面的介紹,我們把它“翻譯”過來,就是:一直等,直到玩家活著的時候,就做下面的動作。


官方文檔中有這樣的解釋:“當(dāng)首次檢查就滿足條件時,則會執(zhí)行行動。當(dāng)未滿足條件列表,但之后又滿足時,則會嘗試再次執(zhí)行行動”。


因此,我們上面的規(guī)則,實際上就是:當(dāng)玩家陣亡的時候,游戲就會等——等到玩家復(fù)活,然后做相應(yīng)的動作。之后玩家又陣亡了,游戲又會繼續(xù)等。不斷重復(fù)上述的過程。


類似的,我們現(xiàn)在要編寫一個規(guī)則,能響應(yīng)不在地板上的玩家按互動鍵(F),那么我們就可以這樣寫


事件:


* 持續(xù) - 每名玩家


條件:


* 在地面上(事件玩家) == 假


* 按鈕被按下(事件玩家, 互動) == 真


動手做一個模式


通過上面的文章,我們已經(jīng)知道了如何編寫規(guī)則。但相信你還不知道如何編寫一個簡單的玩法。不知道大家是否玩過有“守望傳火”之稱的“燙手山芋”模式?這里,我們就以此模式為例子。(如果沒玩過的朋友可以在[這里]體驗)


注意:因為本文是一篇教程文章,所以不會完整覆蓋整個游戲模式。


傳火


我們想想這個模式是怎么玩的?帶著“火”的玩家通過攻擊別的玩家(不論是何種方式),就可以把“火”傳給別人。


那么,這個過程用規(guī)則怎么描述?我們可以這樣說:當(dāng)一名玩家受到傷害,并且他自己沒有火,但是攻擊他的玩家有火的時候,就把火傳給這名玩家。


從上面的描述不難看出,我們應(yīng)該選擇“玩家受到傷害”事件。但是,我們?nèi)绾沃劳婕矣袥]有“火”呢?不知道大家是否記得艾什的“延時雷管”——我們可以用點燃狀態(tài)來表示火。通過翻閱手冊,我們可以找到“具有狀態(tài)”和“設(shè)置狀態(tài)”、“清除狀態(tài)”幾個東西。這樣,我們就可以把條件組合出來。


條件是受傷的玩家沒有火,而攻擊方有火。因為我們使用了“玩家受到傷害”事件,因此,我們使用“事件玩家”表示前者,“攻擊方”表示后者。條件便是:


   具有狀態(tài)(事件玩家, 點燃) == 假

   具有狀態(tài)(攻擊方, 點燃) == 真


動作是把火“傳給”另一名玩家?!皞鳌钡倪^程,又分為一名玩家“失去”火,和一名玩家“得到”火。因此,規(guī)則有兩條:


* 設(shè)置狀態(tài)(事件玩家, 無, 點燃, 9999)


* 清除狀態(tài)(攻擊方, 點燃)


另外,“點燃”只是效果——能看不能用,所以,我們還得再加上一個“傷害”的動作:


* 開始持續(xù)傷害(事件玩家, 無, 9999, 50)


* 設(shè)置玩家變量(事件玩家, A, 上一個持續(xù)傷害效果ID)


* 停止持續(xù)傷害(玩家變量(攻擊方, A))


這里我們用到了變量。大家可以結(jié)合上面的變量小節(jié),想一想為什么要這樣做。(PS:你可以把變量想象成一個“盒子”,設(shè)置就是往“盒子”里放東西)


最終的規(guī)則如圖所示:


加分


俗話說“萬事開頭難”。既然我們已經(jīng)把最基本的東西做出來了,那么我們就可以做下一個東西了:勝利判斷。我們的邏輯是:剩下一名玩家的時候,就給這名玩家加一分。


我們不知道什么時候會剩下一名玩家——可能是某位玩家死亡后,但也可能是某位玩家退出游戲后。我們沒辦法確定到底是什么時候,但我們條件非常清楚:只剩下一名活著的玩家。因此,我們使用持續(xù)事件+條件來做這件事。我們翻閱手冊,可以找到一個叫做“存活玩家數(shù)量”的值。我們直接使用它:


   事件:持續(xù) - 全局

   條件:存活玩家數(shù)量(所有隊伍) == 1


而我們要做的,就是給他加一分。我們在手冊中找到一個叫“所有存活玩家”的內(nèi)容,但注意:它是一個數(shù)組。因為游戲中可能有很多玩家存活,也可能一個都沒有。游戲沒有那么智能,它并不知道我們的規(guī)則一定只有一個玩家。因此,我們需要使用“數(shù)組中的值”:


   修改玩家分?jǐn)?shù)(數(shù)組中的值(所有存活玩家(所有隊伍), 0), 1)


接下來,我們要復(fù)活所有玩家,開始一局新的比賽:


   重生(所有玩家(所有隊伍))


最終的規(guī)則如圖所示:


隨機(jī)傳火


現(xiàn)在大體框架已經(jīng)有了,但是,我們還沒處理一些特別的情況:例如,當(dāng)玩家死亡時,或者玩家退出游戲,導(dǎo)致“火”不見了的時候,我們需要將“火”隨機(jī)給一名玩家。和上面一樣,我們使用持續(xù)事件+條件。


我們的條件應(yīng)該是,當(dāng)所有玩家都沒有火的時候。換句話說,就是有火的玩家數(shù)量=0的時候。游戲并不能直接獲取到有火的玩家,但我們可以利用“已過濾的數(shù)組”來做到這一點:我們從所有存活玩家里,篩選出有火的玩家,不就可以了?


換成條件,就應(yīng)該這樣寫:數(shù)量(已過濾的數(shù)組(所有存活玩家, 具有狀態(tài)(當(dāng)前數(shù)組元素, 被點燃))) == 0。(如果這條規(guī)則你不太看得懂,請嘗試把括號拆開,從里到外,結(jié)合手冊,一點一點看)


動作則是從存活玩家里面,隨機(jī)選擇一個玩家,讓他有“火”。同樣的,我們又要用到“數(shù)組”了:


   設(shè)置全局變量(A, 數(shù)組隨機(jī)取值(所有存活玩家(所有隊伍)))

   設(shè)置狀態(tài)(全局變量(A), 點燃)

   開始持續(xù)傷害(全局變量(A), 無, 9999, 50)

   設(shè)置玩家變量(全局變量(A), A, 上一個持續(xù)傷害效果ID)


最終規(guī)則如下:


修復(fù)問題:死亡掉火


現(xiàn)在邀請幾個好友,或者多開賬號進(jìn)入游戲。開始一局游戲。你們愉快的傳火中,有一名玩家陣亡了。但是,你們發(fā)現(xiàn),“火”并沒有傳給下一個人。房主打開“地圖工坊查看器”一看,哎?隨機(jī)傳火的規(guī)則怎么沒有運行呢?


原來,死亡是不會自動掉火的,我們還需要手動處理它:


* 事件:玩家陣亡


* 具有狀態(tài)(事件玩家, 點燃) == 真


“掉火”其實就是把狀態(tài)去掉,所以動作也很簡單,基本上就是上面的規(guī)則復(fù)制粘貼:


* 清除狀態(tài)(事件玩家, 點燃)


* 停止持續(xù)傷害(玩家變量(事件玩家, A))


最終規(guī)則如下:


總結(jié)


通過幾條規(guī)則,我們就寫出了一個簡單的“燙手山芋”模式。相信你也發(fā)現(xiàn)了,這并不是什么難事。你需要的,只是把一件事變成一件件小事,然后用規(guī)則來完成它。

評論 
還沒有人評論此條信息!
發(fā)布評論:
評論內(nèi)容:
13888888888
  • Q Q: 892340404
  • 微信:
微信公眾號
微信小程序
Copyright © 2025 “杰姆小屋”版權(quán)所有  |  ICP證:京ICP備2022032254號-1  |  技術(shù)支持:框分類信息系統(tǒng)(v2023.1)  |  
網(wǎng)頁內(nèi)的所有信息均為用戶自由發(fā)布,交易時請注意識別信息的虛假,交易風(fēng)險自負(fù)!網(wǎng)站內(nèi)容如有侵犯您權(quán)益請聯(lián)系我們刪除,舉報信息、刪除信息聯(lián)系客服