?? 博客主頁:https://xiaoy.blog.csdn.net
?? 本文由 呆呆敲代碼的小Y 原創(chuàng),首發(fā)于 CSDN??
?? 學習專欄推薦:Unity系統(tǒng)學習專欄
?? 游戲制作專欄推薦:游戲制作
??Unity實戰(zhàn)100例專欄推薦:Unity 實戰(zhàn)100例 教程
?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正!
?? 未來很長,值得我們?nèi)Ρ几案篮玫纳?
------------------??分割線??-------------------------
前言
- 在一個游戲中,游戲手感對于游戲的整體游玩體驗是非常重要的,而游戲手感中有一個很重要的點:
打擊感
- 那本篇文章就來講一下打擊感中的受擊反饋部分。
- 在游戲中經(jīng)常會用到攻擊敵人,敵人扣血,執(zhí)行某些受擊功能的執(zhí)行,尤其是對于有戰(zhàn)斗場景的游戲來說,這就是標準的受擊反饋。
- 所以引出本篇文章的主角:
受擊插件 Feel
的使用,2D和3D游戲都可以使用。 - 對于中小型游戲來說,使用Feel插件是加入打擊感最便捷實用的方法啦,可以省去這方面很多粗枝末節(jié)的操作,一起來看看吧!
- 值得注意的是,本篇文章只是介紹Feel插件的基本功能和常用的使用方法及示例展示,還有很多復雜高級的功能后續(xù)會根據(jù)情況進行一個更詳細的介紹。
開發(fā)游戲時如何操控 游戲打擊感?利用好Feel插件可快速提升游戲感
一、Feel插件簡介
Feel
是一款開箱即用的為游戲提供游戲感(反饋)的Unity平臺下的工具插件。
模塊化的設計,易于擴展;編輯器下的預覽,十足便捷。
官方介紹:
-
??Unity Awards 2021年獲獎者:最佳藝術工具
-
打包超過130個反饋,它會讓你輕松觸發(fā)屏幕震動,觸覺,動畫轉(zhuǎn)換,玩聲音,相機,粒子,物理,后期處理,文本,著色器,時間,UI,并添加果汁到你的游戲的各個方面。
-
?來自廣受好評的柯基引擎和TopDown引擎的創(chuàng)造者,它是最好的果汁和游戲感覺框架,無論你是Unity的新手,還是有經(jīng)驗的開發(fā)者。干凈的代碼,良好的實踐,優(yōu)化,這可能會完全改變你的工作流程。
-
??非常容易使用,mmfeedback將改變你讓你的游戲很棒的方式。只需要創(chuàng)建一個空的游戲?qū)ο?,將mmfeedback類添加到其中,然后你就可以開始添加和調(diào)整單個反饋了。有超過130種不同的反饋可供選擇,現(xiàn)在非常容易創(chuàng)造出讓人感覺良好的游戲。
-
Feel將游戲感拆解成了100+個基本的反饋操作(MMF_Feedback),主要覆蓋了 音頻、鏡頭、動畫、GameObject、特效、后處理、UI、文字等方面。
說簡單點就是Feel 插件 可以讓我們的游戲增加游戲感,所以我們才要來學習Feel的使用啦!
二、Feel插件下載地址
官方下載地址:
https://assetstore.unity.com/packages/tools/particles-effects/feel-183370
下載之后從Unity的PackageManager中找到該插件導入工程即可。
其他下載地址:
微信搜我名字(呆呆敲代碼的小Y) 回復素材資源即可領取。
三、Feel插件核心概念
插件官方文檔地址:https://feel-docs.moremountains.com/core-concepts.html#chance
3.1 反饋器(MMF_Feedback)
MMF_Feedback
是所有反饋行為的基類,處理了反饋效果的基于時間的狀態(tài)管理(播放、暫停、恢復、停止等)。
不同反饋器的參數(shù)都不盡相同,因為要每種反饋器都是負責不同的功能管理,所以不同反饋器的配置參數(shù)也會有很大的區(qū)別。
如GameObject、Transform、Animator等參數(shù)示例圖如下:
3.2 播放器(MMF_Player)
MMF_Player
是MMF_Feedback的容器及管理器。
開發(fā)者在MMF_Player組件下配置好所需的Feedback操作,在運行時調(diào)用該實例的 PlayFeedbacks()
即可觸發(fā)受擊反饋效果的播放。
在播放反饋效果時,該組件可以顯示當前所有Feedback的播放狀態(tài),讓我們對各個受擊反饋有一個大概的時間管理。
3.3 振動器(Shakers)
MMF_Player 既可以控制游戲?qū)嶓w的表現(xiàn),也需要能控制游戲內(nèi)的,像是鏡頭(Camera)、音頻監(jiān)聽器(Audio Listener)等組件。
出于解耦的考慮,F(xiàn)eel在鏡頭、音樂監(jiān)聽器上添加 Shaker
來監(jiān)聽Feedback拋出的廣播。
雖然有些反饋將直接與對象交互,但其他一些反饋將向偵聽器廣播事件。Bloom反饋,AudioSource音量或Cinemachine Transition反饋都是這樣工作的。這個偵聽器被稱為Shaker,因為它將在接收端“搖動”目標值。在每個反饋的檢查器上,通常會看到你需要一個反饋。在API文檔、代碼注釋或反饋列表中也有詳細的解釋。
3.4 信道(Channel)
每個Shaker和觸發(fā)Shaker的Feedback都有一個信道(Channel)參數(shù),信道用來控制Feedback觸發(fā)哪個相匹配的Shaker。
只有互相匹配的通道,在觸發(fā)受擊效果時才會觸發(fā)Shaker。不同通道的Shaker互不影響
3.5 暫停器(Pauses)
默認情況下,MMF_Player管理的所有Feedback都是同時播放。Feel插件中有兩種類型的暫停器,分別是 Pause
和 Holding Pause
。
- Pause 會和其他在它之上的Feedback一起被激活,而之后的Feedback會在Pause執(zhí)行完畢之后再執(zhí)行。
也就是說必須要等該Pause的執(zhí)行時間結束之后,Pause下面的Feedback才可以繼續(xù)執(zhí)行,相當于為Pause下面的Feedback卡了個統(tǒng)一的延遲時間。
- Holding Pause 在等待其之上(前面)的所有操作完成之后才會執(zhí)行。
在Feedback列表中添加Holding Pause相當于等待之前的所有Feedback完成,再等待Holding Pause的Pause Duration之后才繼續(xù)執(zhí)行。
3.6 循環(huán)(Loops)
雖然在所有的Feelback的 Feelback Setting->Timing
下,可以通過設置Repeat相關的選項來控制每個Feelback的循環(huán)播放。
如果想循環(huán)播放一系列的Feelback操作,則需要使用 Looper
進行統(tǒng)一操作了。
包括該Loops的暫停時間,循環(huán)次數(shù)等都可以進行配置。
使用 Looper Start
可以自定義哪些Feedback需要重復。
從定義好的 Looper Start操作到Looper 之間的操作進行重復播放,這樣就不用每次都重復Looper之上的所有效果了。
3.7 概率(Chance)
每個反饋都有一個 Chance
概率滑塊,讓我們定義它發(fā)生的概率,從0(永遠不會發(fā)生)到100(總是發(fā)生)。
默認情況下,該值總是100。概率值為25%的反饋每玩4次才會出現(xiàn)一次。
可以簡單理解為給該Feedback添加一個觸發(fā)概率,控制該Feedback的觸發(fā)行為。
3.8 時間控制(Timing)
在每個Feedback反饋上,都會有一個Timing折疊,朝向其檢查器的頂部,里面有一些參數(shù)。
展開它可以讓你訪問以下選項:
參數(shù) | 描述 |
---|---|
TimeScale Mode 時間尺度模式 | 放或未縮放,將允許您定義反饋應該在縮放或未縮放的時間上運行。這是非常情境化的,并不適用于所有的反饋。 |
Initial Delay 初始延遲 | 以秒為單位,在執(zhí)行此反饋之前應用的延遲 |
Cooldown Duration 冷卻時間 | 在播放后,反饋不能再次播放的時間(以秒為單位)(有助于防止用戶控制的反饋被垃圾郵件發(fā)送) |
ExcludeFromHoldingPauses 從等待暫停中排除 | 該設置允許保持暫停忽略此反饋。這在處理一個特別長的反饋時很有用,你只是想讓它開始,而不是延遲序列的其余部分。 |
ContributeToTotalDuration 貢獻到總持續(xù)時間 | 是否將此反饋計算在父mmfeedback (Player)總時長中 |
Number of Repeats 重復次數(shù) | 該反饋應該重復的次數(shù)(默認為0) |
Repeat Forever 永遠重復 | 選中此復選框可以讓您的反饋永遠重復 |
Delay Between Repeats 重復之間的延遲 | 在重復模式下,在反饋再次播放之前應該通過的延遲,以秒為單位 |
Play Direction 播放方向 | 這個部分讓你定義當它的父mmfeedback以特定的方向播放(默認從上到下,或者相反,從下到上)時,這個特定的反饋應該如何反應。 |
mmfeedback 方向條件 | 讓你定義這個反饋是否總是播放,或者只在父mmfeedback反向或正向播放(默認)時播放。 |
Play Direction 播放方向 | 讓你定義這個反饋應該總是在正常模式下播放,反向,在它的主機方向上播放,還是在它的主機的相反方向上播放。大多數(shù)反饋都具有“反向發(fā)揮”的可能性。例如,位置反饋將一個對象從a點帶到B點,當反向播放時,它將從B點帶到a點。 |
Constant Intensity恒定強度 | 當玩游戲時,MMFeedback會使用一個可選的強度來調(diào)用它的子MMFeedback,這是一個讓你調(diào)節(jié)反饋的“強烈”程度的倍增器。如果你檢查恒定強度,這個反饋將忽略全局修飾符。 |
Use Intensity Interval 使用強度間隔 | 如果勾選,將讓你定義一個最小和最大強度,在這個反饋將發(fā)揮。強度超出此范圍將不會觸發(fā)此反饋。如果你有一個mmfeedback,根據(jù)它的強度會產(chǎn)生不同的結果,這是很有用的。例如,想象在一款游戲中,你的角色可能會受到傷害,你希望它在受到嚴重傷害時以紅色閃爍,在受到輕微傷害時以黃色閃爍。一個“被損壞”的mmfeedback可以有一個ShaderController反饋,只有當強度在0到50之間時,才會將損壞的角色染成黃色,而另一個ShaderController反饋,當強度在50到100之間時觸發(fā)。 |
Sequence 序列 | 用于播放此反饋的序列 |
Track ID 軌道ID | 在序列上使用的ID |
Quantized 量化 | 序列是否應該以量化模式播放 |
四、Feel插件使用說明
4.1 導入Feel插件
Feel插件支持Unity2019.4.3及以上的版本。以下以Unity2020.3.33f1為例,新建一個默認的3D項目,導入Feel插件。
在 Assets/Feel/FeelDemos/
目錄下是部分Demo,可以先嘗試打開一個Barbarians/FeelBarbarians.unity 的場景,點擊Play后可以正常運行,并顯示手機反饋效果,就表示Feel插件導入成功啦。
4.2 使用插件示例
使用Feel的流程簡單分為兩步:
第一步是通過MMF_Player建立Feedback列表,另一步則是觸發(fā)MMF_Player播放效果。
現(xiàn)在開始來一步一步實現(xiàn)一個游戲?qū)ο笫軗舻姆答仭?/p>
我們在這個示意中將為游戲?qū)ο筇砑?個反饋效果:
受擊擊退反饋、受擊閃白反饋、受擊傷害飄字反饋、受擊鏡頭搖晃反饋、受擊音效反饋** 和 受擊動畫反饋**。
關于Feel還可以提供更多的反饋效果,這里就展示幾種平時用的比較多的反饋模式方便學習。
4.2.1 準備工作
新建一個場景,在場景中創(chuàng)建一個空對象Create Empty命名為Enemy,然后在此對象下創(chuàng)建一個膠囊體命名為Feedback。
此步驟的目的是使用該 Feedback對象 專門用來處理控制受擊反饋的效果而不會影響到整個的Enemy對象。
為FeedBack添加MMF_Player
組件。
將MMF_Player的 Initialization Mode參數(shù)設置為Awake。
4.2.2 添加擊退位移效果
為MMF_Player 添加一個擊退的位移Feedback。
找到MMF_Player ,點擊 Add new feedback... -> Transform -> Position
為 Position -> Position Target -> Animate PositionTarget
綁定Feedback實體。
也就是說將場景中的Feedback對象拖到下圖中 Animate PositionTarget 這個位置。
Transition -> Mode
選擇Along Curve,表示物體在Animate Position Duration的時間內(nèi),根據(jù)Animate X/Y/Z下的曲線進行位移。
位移的幅度(曲線的[0,1]的范圍)為[Remap Curve Zero, Remap Curve One]。
點擊Unity的運行,在Hierarchy窗口選中Feedback,在Inspector窗口點擊MMF_Player下的Play按鈕,即可看到對象受擊的位移反饋。
4.2.3 添加閃白效果
既然要閃白,我們就得先把對象變個顏色。
首先新建一個材質(zhì)球名為SlashMat,設置Shader為 MoreMountains/MMToon
修改材質(zhì)球的DiffuseColor為黃色,勾選Emission選項,將EmissionColor設為白色,EmissionForce設置為0。
將新的SlashMat材質(zhì)球賦給Feedback。
然后為Feedback添加一個MMBlink組件。
修改 Method 為 Shader Float Value ,將Enemy賦給Target Renderer,將Shader Property Name改為_EmissionForce,并新建一個Phases,賦值如下圖。
接下來我們在Feedback的 MMF_Player 中添加新的 Renderer/MMBlink
的反饋。
將Feedback賦給 Blink->Target Blink
,然后點擊Grab Duration From Blink Component,它會將Feedback身上的MMBlink的Phase Duration的配置自動同步。
點擊Unity的運行,在Hierarchy窗口選中Enemy,在Inspector窗口點擊MMF Player下的Play按鈕,即可看到方塊受擊的位移+閃白反饋。
4.2.4 添加飄字效果
在場景中新建一個空GameObject命名為FloatTextSpawner,為其添加MMFloatingTextSpawner組件。這個組件是創(chuàng)建飄字的工廠(池)。
為Pooler->Pooled SimpleMMFloatingText
附上一個飄字的Prefab。
可以直接用工程中已有的Prefab:Assets/Feel/FeelDemos/Tactical/Prefabs/FeelTacticalSimpleFloatingText.prefab
可以修改Spawn Settings 的Lifetime來改變飄字效果持續(xù)的時長。修改Spawn Offset來改變飄字的初始偏移。
可以修改Animate Position來調(diào)整飄字的移動距離。
可以修改Animate Scale來調(diào)整飄字的縮放,Animate Color來調(diào)整字體的顏色,變色記得勾選Animate Color。
配置完成飄字生成器后,我們開始為Enemy的MMF Player添加 UI->FloatingText
的反饋效果。
點擊Unity的運行,在Hierarchy窗口選中feedback,在Inspector窗口點擊MMF_Player下的Play按鈕,即可看到方塊受擊的位移+閃白反饋+飄字效果。
4.2.5 添加鏡頭搖晃
在場景中新建空GameObject命名為CameraRig,在它之下建立空GameObject命名為CameraShaker,將Main Camera作為CameraShaker的子節(jié)點。
為CameraShaker添加MMCameraShaker組件。
MMCameraShaker會為CameraShaker附加添加上MMWiggle組件。
在MMWiggle組件中,我們勾選上Position,取消勾選Wiggle Permitted,設置Wiggle Type為Noise。增加Amplitude的振幅。
設置完成振動器后,我們?yōu)镋nemy的MMF_Player添加新的Camera/Camera Shake反饋效果。
配置鏡頭晃動的時間、振幅、頻率和不同軸向上的振幅比例。
此時點擊Unity的運行,在Hierarchy窗口選中Feedback,在Inspector窗口點擊MMF Player下的Play按鈕,即可看到方塊受擊的位移+閃白反饋+飄字+鏡頭搖晃的效果。
4.2.6 添加受擊音效
為MMF_Player 添加一個擊退的聲音反饋Feedback。
找到MMF_Player ,點擊 Add new feedback... -> Audio-> Sound
為 Sound添加音頻片段,然后將PlayMethod改為Cached
然后此時運行Unity選中該物體,在Inspector窗口點擊MMF_Player下的Play按鈕,即可看到對象受擊的聲音反饋。
4.2.7 添加動畫控制效果
為MMF_Player 添加一個擊退的動畫效果Feedback。
找到MMF_Player ,點擊 Add new feedback... -> Animation-> Animation Parameter
動畫受擊效果所需條件:敵人身上需要有Animator組件,且配套有相關的AnimatorController。
這里使用Feel插件里面一個有動畫效果的敵人做測試,參數(shù)方面需要將敵人身上的Animator拖到Feedback上,然后選擇Trigger并輸入TriggerName。
這里的Trigger和Name是根據(jù)Animator組件上實際的動畫控制器中的配置決定的。
比如這個敵人預制體身上的動畫組件中有三個動畫片段:Idle、Attack、Damage
此時運行Unity,選中該物體,在Inspector窗口點擊MMF Player下的Play按鈕,即可看到對象受擊的動畫反饋效果。
4.2.8 使用代碼控制播放受擊效果
上面講了幾種常用的受擊效果預覽,在實際的項目中則需要使用腳本和依賴邏輯進行控制受擊效果的觸發(fā)。
觸發(fā)受擊效果的代碼也很簡單,首先使用代碼獲取到MMF_Player組件,然后調(diào)用PlayFeedbacks()方法即可執(zhí)行Play觸發(fā)配置好的受擊效果。文章來源:http://www.zghlxwxcb.cn/news/detail-624069.html
private MMF_Player _enemyPlayer;
private void Awake()
{
_enemyPlayer = GetComponent<MMF_Player>();
}
private void ClickTrigger()
{
if (_enemyPlayer)
{
_enemyPlayer.PlayFeedbacks();
}
}
總結
- 本文介紹了受擊插件Feel的簡介、核心功能及使用方法示例。
- 使用示例簡單講解了Feel的部分功能,實際上還有很多可以調(diào)用的API執(zhí)行各種各樣的效果。
- 后面會繼續(xù)更新一些關于該插件的其他好用皮實的功能以及某些踩坑注意點。
- 更多關于受擊插件Feel的問題也可以在評論區(qū)討論學習使用。
文章來源地址http://www.zghlxwxcb.cn/news/detail-624069.html
到了這里,關于【Unity 實用工具篇】?| 受擊插件Feel 詳細教程,開發(fā)游戲時更好的操控 游戲打擊感的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!