您好,登錄后才能下訂單哦!
本篇文章為大家展示了Unity - Cinemachine怎樣實現相機抖動,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
普通相機抖動腳本較易實現,但在使用cinemachine相機下,其Transform組件不可被代碼修改,那么Cinemachine的相機抖動如何實現呢?小編對實現相機抖動的三大步驟進行系統講解:
項目背景:一款2D像素動作游戲,我們操控著Player(必須帶有Collider組件),游戲相機為 Cinemachine 2DCamera (關于其配置方法此處不做贅述,推薦文章在末尾參考處)
在我們使用的虛擬相機 CM vcam1 上添加組件:AddComponent-> CinemachineImpulse Listener
CinemachineImpulse Listener : 監聽腳本內震動信號(方法調用) ,使得 抖動在此相機上發生
Channel Mask:通道遮罩,此處最好默認為EveryThing
Gain:可獲得震動信號的數目,0為屏蔽,1表示某時段僅能進行一個抖動運動
Use 2D Distance:用于2D游戲,忽略相機Z軸的抖動
震動信號發生物體( 調用震動函數的物體 )為Player,因此需要在Player上添加組件:AddComponent-> Cinemachine Collision Impulse Source (注:必須掛到含Collider的物體上),然后在Raw Signal右側齒輪-> New Noise Settings 添加 震動配置器 ,默認名CM vcam1 Raw Signal
Cinemachine Collision Impulse Source :含有 抖動函數 、 震動配置器 的關鍵腳本
Raw Signal: 震動配置器 ,配置 震動參數 的關鍵部件,我們打開剛上面新建的CM vcam1 Raw Signal,可看到震動方式的各類參數。我們以Position Y,即上下抖動為例,添加Components后可設置其 Frequency震頻 及 Amplitude震幅 ,并且勾選右側方框可將其設置為 正弦波
Attack:抖動開始的變化曲線及時間
Sustain Time: 抖動的持續時間
Decay:抖動衰退的變化曲線及時間
在Player內引用震動核心腳本,并在合適位置調用震動方法
private Cinemachine.CinemachineCollisionImpulseSource MyInpulse;
private void Start()
{
MyInpulse = GetComponent<Cinemachine.CinemachineCollisionImpulseSource>();
}
private void Update()
{
//按下右鍵產生相機抖動,抖動方式依照上面CM vcam1 Raw Signal內配置信息
if (Input.GetMouseButtonDown(1))
MyInpulse.GenerateImpulse();
}
至此,我們在游戲內操控Player,按下右鍵即可實現相機抖動。當然除了上面無參的 GenerateImpulse()
方法,還有兩個帶參的方法:
//假若使用傳遞velocity的方法,其震動方式為velocity和CM vcam1 Raw Signal的混合public void GenerateImpulse(Vector3 velocity);public void GenerateImpulse(Vector3 position, Vector3 velocity);
此外,還有可能出現bug:還尚未調用震動函數,游戲開始時就自動產生抖動。其產生原因博主尚未在對應腳本內發現,但解決方式為關閉Player上的Cinemachine Collision Impulse Source腳本
Cinemachine中實現相機抖動的基本流程:
在虛擬相機上添加 監聽腳本 CinemachineImpulse Listener
在Player上添加震動 核心腳本Cinemachine Collision Impulse Source ,并添加、設置 震動配置器
Player腳本合適位置 調用震動函數
本例僅介紹了單Position方向上的抖動,讀者可按需配置抖動的Position、Rotation、發生時間、維持時間、衰退時間等,實現自己想要的效果
上述內容就是Unity - Cinemachine怎樣實現相機抖動,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。