dota2屠夫鉤于騎砍mod系統(tǒng)之實(shí)現(xiàn)方法講解

前言:一個(gè)要用代碼實(shí)現(xiàn)的游戲功能,要先對(duì)引擎或mod系統(tǒng)支持的功能有所了解,然后理清思路和步驟并考慮各步做到什么程度再寫。
基礎(chǔ)版視頻:

做法:
1.首先需要準(zhǔn)備模型,這時(shí)候從追求上你要考慮是只是表達(dá)一下鉤人的機(jī)制,還是要把特效及屠夫模型動(dòng)作也一并做好力求完美。我比較隨意,先只做機(jī)制,所以模型要準(zhǔn)備兩個(gè):鉤子和鏈條。
2.接著考慮動(dòng)畫,人物動(dòng)畫偷懶的話可以不做或者用一下現(xiàn)有的帶有直刺的動(dòng)作(比較像放鉤),這個(gè)看不出太僵的(別太先追求完美,完美主義會(huì)把你不會(huì)的先卡死在你會(huì)的前面浪費(fèi)磨耗你的時(shí)間和激情):然后是鉤子的動(dòng)畫,或者說是否確定用動(dòng)畫,此點(diǎn)放入下面第三條。
3.考慮鉤子和鏈條是否需要?jiǎng)赢嫞疤崦鞔_鉤子和鏈條在鉤人事件中的運(yùn)動(dòng)狀態(tài),鉤子應(yīng)該始終保持在人的手上或者鏈條的終端,而鏈條可以加長(zhǎng)和縮短。可以看出,鉤子的運(yùn)動(dòng)狀態(tài)基本是附屬于鏈條即隨鏈條從動(dòng)運(yùn)動(dòng),所以要先確定主運(yùn)動(dòng)狀態(tài),即鏈條伸縮的實(shí)現(xiàn),在騎砍里主要有以下幾個(gè)方法:
a.命令控制一個(gè)坐標(biāo)方向的模型尺寸,優(yōu)點(diǎn)是在伸縮方面所用代碼少,局限是模型拉縮后紋理扭曲難看,并且非棍類模型更難看,并且確定伸縮鏈條終端坐標(biāo)計(jì)算麻煩。
b.使用粒子效果,可能有人覺得粒子不應(yīng)該是什么光效一樣的模型嗎,鏈條這樣的實(shí)物可以嗎?然而粒子的原理就是利用流體力學(xué)將模型在空間噴射,根據(jù)事先設(shè)定的粒子模型物理特性來呈現(xiàn)大量粒子模型的組合運(yùn)動(dòng)效果,然而騎砍一般見得最多的是一些特別小的粒子模型組成類似分子運(yùn)動(dòng)的特效,然而粒子模型設(shè)置什么都可以,你把哈老四設(shè)置成粒子模型,你也可以把哈老四射的滿天飛。
c.模型的組合加運(yùn)動(dòng)效果(和b其實(shí)是同一個(gè)思路)優(yōu)點(diǎn)是可以確定鏈條終端進(jìn)而確定鉤子的運(yùn)動(dòng)狀態(tài)并且方便控制整個(gè)運(yùn)動(dòng)環(huán)節(jié),缺點(diǎn)是不利于優(yōu)化。
d.鏈條動(dòng)畫,其實(shí)也和b、c原理差不多,只不過區(qū)別在于控制的條件,前兩個(gè)核心控制條件是距離和時(shí)間,而這個(gè)是距離和動(dòng)畫幀。優(yōu)點(diǎn)是優(yōu)化尚可,缺點(diǎn)是需要好好斟酌動(dòng)畫幀的數(shù)量與鏈條數(shù)量之間的關(guān)系。
4.開始考慮整個(gè)鉤人事件過程:首先明確這是要模仿dota2的屠夫鉤,所以先回憶一下dota2屠夫鉤的機(jī)制和整體過程,其次明確要用來模擬的是騎砍這個(gè)第三人稱游戲,要考慮第三人稱下目標(biāo)瞄準(zhǔn)與鉤子運(yùn)動(dòng)方向的關(guān)系以及對(duì)無視地形情況的調(diào)整。
dota2屠夫鉤過程是這樣的:
a.沒鉤人時(shí),鉤子在手心里。(說明了沒有開始鉤人時(shí)鉤子的位置狀態(tài))
b.發(fā)鉤,人做動(dòng)作(如果有),鏈條向人面向方向伸長(zhǎng),鉤子保持位于鏈條終端(說明了開始鉤人鉤子前進(jìn)未碰到人或達(dá)到鏈條最大距離時(shí)鉤子的位置狀態(tài))。
c.鉤子前進(jìn)碰到人或達(dá)到鏈條最大距離時(shí),鏈條以原反方向縮回去,鉤子依舊保持位于鏈條終端,特別的,當(dāng)鉤子鉤到人時(shí),禁用人的部分ai運(yùn)動(dòng)學(xué)等代碼,位置隨鉤子運(yùn)動(dòng),此時(shí)可以不用取消ai動(dòng)作,只需要取消ai動(dòng)作產(chǎn)生的運(yùn)動(dòng)效果,因?yàn)橥婪蜚^人時(shí)隊(duì)友還可能在勾過來的位置做出打擊動(dòng)作或施法。(巨魔:M&M%p,又鉤隊(duì)友,老子差點(diǎn)A死那人了)
d.當(dāng)鉤子返回手中位置時(shí),恢復(fù)人的剛被禁用的ai運(yùn)動(dòng)學(xué)等代碼,然后就是。。。帕吉:啊哈哈,五花肉。(但注意如果發(fā)鉤人在鉤人過程中位置和動(dòng)作被強(qiáng)制或主動(dòng)移動(dòng)了,需對(duì)鉤子鏈條運(yùn)動(dòng)進(jìn)行調(diào)整)
所以,在騎砍里做出dota2屠夫鉤,也是按照以上步驟,但結(jié)合第三人稱,需再加一點(diǎn),發(fā)射點(diǎn)為手心,發(fā)射方向?yàn)榘l(fā)鉤人的視線方向。至于無視地形,本來屠夫鉤就是無視地形的,這個(gè)不管。然后就是確定鉤人范圍,其實(shí)觀察發(fā)現(xiàn),dota2屠夫的鉤子是否判斷鉤中人不是根據(jù)碰撞或模型交叉的判定,而是一個(gè)范圍,畢竟是一個(gè)RTS視角的游戲(請(qǐng)擦亮眼睛,別看少我的視角二字)。所以騎砍也可以這么做,以發(fā)射后鉤子位置坐標(biāo)為球心的某個(gè)范圍確定那些人可以觸發(fā)被鉤中條件。





