RPG游戲開發(fā)日志3:簡單技能的實現(xiàn)

本項目同步上傳于github和coding上,國內(nèi)讀者可以通過在coding下載項目,從本篇開始,已經(jīng)將Tutorial分支合并到dev分支,之后只在dev分支做開發(fā),并保證master分支是相對穩(wěn)定的版本。也歡迎你加入我的UE4學(xué)習(xí)交流QQ群:872537977。如果你喜歡我寫的文章,也希望你點贊、收藏、轉(zhuǎn)發(fā)。謝謝!

github地址:https://github.com/Liweimin0512/uRPG

coding地址:https://git.dev.tencent.com/JeremyBrett/uRPG.git

這篇文章我們制作2個十分粗糙的技能,分別是這樣的效果:

1、恢復(fù)自身一定數(shù)值的生命值

2、向角色前方發(fā)射一個火球,并對碰觸到的第一個敵方角色造成傷害

請注意,這篇文章所實現(xiàn)的方式本身存在很多缺點,之所以這樣做是為了解釋我在開發(fā)中踩過的坑,并且為之后的重構(gòu)做一個伏筆,這里我們不會引入“動畫蒙太奇”的概念。但看完這篇文章,你基本會理解這個玩意兒真的很有用。

項目設(shè)置

首先在 項目設(shè)置-輸入 中添加一些技能案件,我這里添加了10個,分別對應(yīng)按鍵1~0:

添加ActionMapppings

動畫狀態(tài)機調(diào)整

首先是狀態(tài)機的調(diào)整,這里我們加入兩個動畫狀態(tài),直接在右下角選擇對應(yīng)名稱的動畫并添加到這里即可。

狀態(tài)機調(diào)整

并且在動畫狀態(tài)機藍圖中添加兩個布爾型變量,分別命名為Casting1H和Attack,用于狀態(tài)的切換。

布爾型變量

因為很簡單,這里只貼出其中一個條件,其他同理。

CanEnterTransition

之后就是在狀態(tài)機的事件圖表中,我們需要將Owner 轉(zhuǎn)換為 Bp_CharacterBase類型,才能獲取Bp_CharacterBase藍圖中的這兩個變量(也就是說在角色藍圖中也需要兩個同名、同類型變量),并和藍圖中的這兩個同名變量關(guān)聯(lián)上。

關(guān)聯(lián)上變量

這樣動畫藍圖中的準(zhǔn)備工作就做好了,這一步操作的目的其實就是讓角色在釋放技能時候播放對應(yīng)的動作。

技能設(shè)計思路

技能釋放的流程大體如下:

1、從玩家輸入釋放技能的指令開始;

2、判斷能否釋放技能(狀態(tài)判斷、技能CD判斷等);

3、釋放技能,這部分包括技能表現(xiàn)效果(播放動作、生成特效等)、技能邏輯效果(產(chǎn)生一個道具、改變角色狀態(tài)或?qū)傩缘龋﹥刹糠郑?/p>

4、進入技能CD階段;

其實更深層次的考慮的話,技能還應(yīng)該拆分為前搖、生效、后搖等幾個階段。但這不在這篇日志的討論范圍內(nèi),會在之后技能的進階開發(fā)日志中做更詳細(xì)的討論。

恢復(fù)生命值效果技能

當(dāng)玩家輸入指令后,首先進行判斷,我這里做的判斷包括:技能CD判斷、是否正在釋放技能判斷、Mana值是否足夠判斷。

技能釋放判斷

當(dāng)Mana值不足時,會有一個提示效果,效果很簡單會在后文中詳述。這里給出藍圖節(jié)點如下

Mana不足提示

技能判斷通過,可以釋放技能了,我這里首先禁用了角色的移動(不禁用也可以,只是會很違和。因為釋放技能的動作沒有和移動動作融合,這個也會在之后的文章中詳述)

禁用移動

然后便是技能的效果,首先就是播放動作,只需要將變量Casting1H設(shè)置為True即可。然后便是通過上篇文章所寫的StatManager提供的ModifyStat函數(shù)對Mana和Health的數(shù)值進行調(diào)整即可。

技能效果

實際上這時候技能效果已經(jīng)完成了,這里我額外在角色Mesh的右腳(RightFoot)骨骼的坐標(biāo)位置生成一個特效。然后手動創(chuàng)造了一個2秒鐘的延遲(基本是動作播放完成的時間)。并將Casting1H變量歸位即可。哦對了,別忘了把移動重新開啟。

技能特效

這個特效包含在免費素材中,可以直接下載使用很方便

Infinity Blade:Effects

最后,技能完成,進入CD階段,其實CD階段也很簡單。我這里假設(shè)技能CD默認(rèn)為1,當(dāng)技能CD不為1的時候就+0.05,然后延遲0.2秒鐘循環(huán)判斷,直到CD為1為止:

技能CD

這樣,一個技能就算是完成了,運行一下,試一試,OK可以。進行下一項。

攻擊技能

攻擊技能讓我們釋放一個火球,所以首先我們創(chuàng)造一個火球Actor命名為MagicProjectTile,這個Actor中有兩個比較重要的組件1個是Sphere我們選一個好看的特效即可。一個就是ParticleSystem用以控制移動。

火球Actor

技能的判斷與上面的技能相同,這里不再重復(fù)了,重點看技能的效果實現(xiàn)部分。這里我用了兩個Delay節(jié)點,其實就是模擬上文中說到的前后搖時間,在動作播放到恰當(dāng)?shù)臅r候才創(chuàng)建這個火球,并通過獲取角色當(dāng)前位置做一個偏移的位置來生成火球。

生成MagicProjectTile

之后的技能CD部分與上文中的恢復(fù)生命值技能相同,這里也略過不談。

UMG_NoManaPopup

其實這個UI只是一個添加了動畫的Text控件,動畫的內(nèi)容就是在一段時間內(nèi)改變了控件的Transform和透明度,感興趣的可以直接看源碼。

UMG_NoManaPopup

總結(jié)

運行,測試,完美(至少目前為止是這樣的)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容