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