Unity Cinemachine實現相機抖動

2022-03-10 20:52:46 字數 1597 閱讀 6074

普通相機抖動指令碼較易實現,但在使用cinemachine相機下,其transform元件不可被**修改,那麼cinemachine的相機抖動如何實現呢?本文結合實際專案,對實現相機抖動的三大步驟進行系統講解:

專案背景:一款2d畫素動作遊戲,我們操控著player(必須帶有collider元件),遊戲相機為cinemachine 2dcamera(關於其配置方法此處不做贅述,推薦文章在末尾參考處)

在我們使用的虛擬相機 cm vcam1 上新增元件:addcomponent->cinemachineimpulse listener

震動訊號發生物體(呼叫震動函式的物體)為player,因此需要在player上新增元件:addcomponent->cinemachine collision impulse source(注:必須掛到含collider的物體上),然後在raw signal右側齒輪->new noise settings新增震動配置器,預設名cm vcam1 raw signal

在player內引用震動核心指令碼,並在合適位置呼叫震動方法

private cinemachine.cinemachinecollisionimpulsesource myinpulse;

private void start()

private void update()

至此,我們在遊戲內操控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中實現相機抖動的基本流程:

本例僅介紹了單position方向上的抖動,讀者可按需配置抖動的position、rotation、發生時間、維持時間、衰退時間等,實現自己想要的效果

Camera相機開發 實現開啟相機

android camera相機開發知識點介紹了進行camera開發需要了解的知識點 由於6.0 以上的系統需要我們在程式執行的時候進行動態許可權申請,所以我們需要在程式啟動的時候去檢查許可權,有任何乙個必要的許可權被使用者拒絕時,我們就彈窗提示使用者程式因為許可權被拒絕而無法正常工作 privat...

實現防抖節流

防抖 debounce 不管事件觸發頻率多高,一定在事件觸發n秒後才執行,如果你在乙個事件觸發的 n 秒內又觸發了這個事件,就以新的事件的時間為準,n秒後才執行,總之,觸發完事件 n 秒內不再觸發事件,n秒後再執行。直接上 例如頁面視窗一直在改變 停止的是n秒後執行事件 window.onload ...

el input實現防抖

使用element ui的input時,需求是輸入值有變化時就進行事件繫結。有乙個事件是 input 之前看過防抖節流相關的一些知識點,也沒用過,這次剛好稍微用一下咯 input不再繫結事件 searchstr watch 如果手動清空input裡的值,也要進行相應的變化 if str method...