最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

關于騎砍RTS化控制功能的制作思路分享簡述

2019-12-20 04:59 作者:killyouready  | 我要投稿

鑒于最近多人問我b站這個類似紅警的rts控制功能的怎么做的,省的一個個說麻煩,直接寫文章寫這兒了(中文站技術(shù)區(qū)我也發(fā)了一遍,想深入討論的也可以去那里),不過我向來只說思路要點,不直接貼代碼供伸手。
gif效果圖和demo視頻:

總體思路其實很簡單,首先用presentation任意畫長方形這種基礎的不用說了吧?關鍵在于要認識到以下幾點。


1.鼠標拉框選框的方法:
先講個常識,通過已知斜線作為對角線畫出一個底邊平行于屏幕底邊的長方形有且只有一個。
所以你要畫出那個長方形框選框,只需要確定對角線的兩個點的坐標。這兩個點確定方式是:首先要知道rts那個拉出框選框的運行流程,其實那兩個點一個是靜態(tài)點,一個是動態(tài)點。一個是你剛開始點擊鼠標左鍵的時候記錄一下鼠標左鍵的屏幕坐標位置作為第一個靜態(tài)點,之后你按著鼠標左鍵的時候,移動鼠標你鼠標記錄的位置就是第二個動態(tài)點。

2.確定及控制鼠標框選框里的人物方法:
把地圖上的人物坐標都用get?screen?pos轉(zhuǎn)化成屏幕坐標,用is?between他們的x、y坐標值是否在那個長方形對角線兩點的x、y坐標值區(qū)間內(nèi)(因為對角線上兩點xy坐標值就是長方形框最小及最大xy坐標值所在),然后用slot,把選中的人和沒選中的人區(qū)分開,然后根據(jù)slot值作為單位循環(huán)條件,控制選中單位的行為(移動、攻擊等),給他們添加一些圖案(如戰(zhàn)團自帶光圈)來區(qū)分等等。

3,鼠標控制鏡頭方法:
根據(jù)分別判斷鼠標xy坐標值距離屏幕快到邊緣的xy坐標的最大值和最小值的一定距離時,讓控制鏡頭的那個全局變量(自己設定)加減或?qū)嶓w寄存器(我創(chuàng)的概念,下面再解釋)位移就行。

4.單位根據(jù)鼠標點地移動的方法:
用mouse_get_world_projection,用第一個坐標參數(shù),這個獲得的坐標就是鼠標垂直屏幕位置向內(nèi)的射影坐標(第二個坐標參數(shù)基本用不上,當它廢了好了),所以在俯視角在這個op獲取的第一個坐標參set?z?to?ground就是鼠標點地后的地面坐標,當然由于rts視角不可能都是90度俯角的設定,加上延遲因素,自行根據(jù)自己的設定加減坐標修正量。

主要涉及的關鍵op及作用(偷懶簡寫了):
get?screen?pos(三維坐標轉(zhuǎn)屏幕坐標),mouse?get?world?projection(獲取鼠標垂直屏幕位置向內(nèi)的射影坐標),agent?get/set?slot(特定人群控制),key?clicked/is?down(按鍵觸發(fā)框選時機和單位移動時機)
主要修改文件presention及mission?temple。

題外:實體寄存器思想
以前我看r大用全局變量獲xyz坐標值做戰(zhàn)場鏡頭控制時就覺得其實不用這么麻煩??梢杂靡粋€空的sceneprop的位置關聯(lián)引導鏡頭的位置,通過對sceneprop的運動控制op來達到間接移動鏡頭的坐標,這樣寫法會更簡便且就不必要知道其xyz坐標值了(其實同理agent也能這樣用,利用agent?set?dynamic=1就可以在三維空間任意設定agent的pos,借助不參戰(zhàn)隱身agent的位置關聯(lián)引導鏡頭坐標)。

這種以運用實體的某一特性值來達到對其他事物的控制的方法我稱之為實體寄存器,其他像Cs:source的hammer和魔獸編輯器也有類似思想,war3的我以前說過,這種思路叫作馬甲思想,因為war3經(jīng)常運用對攜帶特效的隱形物體的運動控制來更方便的制作復雜動態(tài)特效比如無敵斬之類的。

最后:工作較忙,如果以后有空的話我會來給大家分享一些新穎的思路和方法,并且我覺得我做這個并不是一定是要用騎砍做一個不同于騎砍模式的新游戲出來,也不必有些人問"這樣折騰騎砍有什么用""偏離本質(zhì)玩法不再是騎砍不如玩其他游戲"的論調(diào),我覺得萬事萬物總要嘗試并發(fā)展,當你可以將一個事物的本質(zhì)去改變,你也就有能力將符合這個事物本質(zhì)的某方面更好的擴充完善。所以功能不一定只為mod而做,也可以出于挑戰(zhàn)和煅煉自我而嘗試一些demo,最后也許你會發(fā)現(xiàn)有些做demo時的某些思路最終又可以解決有些mod上的其他方面的類似功能,從而殊途同歸。
還有就是對于當前是否有必要繼續(xù)戰(zhàn)團代碼的研究與戰(zhàn)團mod的開發(fā)的看法,講道理,砍2已經(jīng)60GB,其實玩騎砍的玩家中有相當一部分人是hold不住這樣一個"大游戲"的或可能像我一樣懶的下載容量太大的游戲,而且砍2目前看來還是需要"潤色"一段時間的。所以戰(zhàn)團及其mod在一段時間內(nèi)還是主流騎砍玩家選擇,而且既然很多人認同戰(zhàn)團美工做了砍2也能用上,其實代碼也是如此,盡管語言表達不同,但思路都是大同小異的,大家可以先練練思路(其實也可以拿V社的hammer和魔獸的jass先練練手如果你以前用過的話,其實他們的編碼格式更像砍2的編碼寫法)
總之,我對騎砍的理念就是,宣揚并讓更多人認可什么是萬能的騎砍,為什么war3敢立自己是萬能編輯器的flag并被大多玩家認可,而輪到mod更繁榮的騎砍,卻被很多老玩家和云玩家以引擎限制論和換皮論忽悠新玩家,騎砍玩家特別是moder要有自己的引擎自信。

下圖是為了方便選擇文章標題頭圖的,可忽視:


關于騎砍RTS化控制功能的制作思路分享簡述的評論 (共 條)

分享到微博請遵守國家法律
琼中| 巴林右旗| 钦州市| 台江县| 安吉县| 湛江市| 银川市| 通许县| 乐山市| 保亭| 平度市| 木兰县| 开江县| 清徐县| 土默特左旗| 东宁县| 昆山市| 深泽县| 永福县| 航空| 德庆县| 芮城县| 陆川县| 民丰县| 丹江口市| 化隆| 莎车县| 都昌县| 额尔古纳市| 榆中县| 乌拉特后旗| 根河市| 新干县| 玉门市| 邯郸市| 开化县| 和田市| 谢通门县| 沙田区| 中江县| 秦安县|