RPG游戲開發日志3:簡單技能的實現

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

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

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

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

1、恢復自身一定數值的生命值

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

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

項目設置

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

添加ActionMapppings

動畫狀態機調整

首先是狀態機的調整,這里我們加入兩個動畫狀態,直接在右下角選擇對應名稱的動畫并添加到這里即可。

狀態機調整

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

布爾型變量

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

CanEnterTransition

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

關聯上變量

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

技能設計思路

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

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

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

3、釋放技能,這部分包括技能表現效果(播放動作、生成特效等)、技能邏輯效果(產生一個道具、改變角色狀態或屬性等)兩部分;

4、進入技能CD階段;

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

恢復生命值效果技能

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

技能釋放判斷

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

Mana不足提示

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

禁用移動

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

技能效果

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

技能特效

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

Infinity Blade:Effects

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

技能CD

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

攻擊技能

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

火球Actor

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

生成MagicProjectTile

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

UMG_NoManaPopup

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

UMG_NoManaPopup

總結

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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容