unity中相機跟隨物體移動、抖動的問題


在物體角色移動時用FixedUpdate而相機跟隨使用Update時,相機可能會跟隨主角的過程中抖動

相機跟隨的代碼:其中players為跟隨的目標

1 private void Update()
2 {
3     Vector3 Player=players.position+playmover;
4     transform.position=Vector3.Lerp(transform.position,Player,Time.deltaTime*smoothing);
5     if(Vector3.Distance(transform.position,Player)<=0.02f)
6 {
7     transform.position=Player;
8 }
9     transform.LookAt(players);}

此處可能是因為使用了插值算法的原因,從而導致相機和角色有了位置差,故LootAt一直搖擺跟隨,故最簡單的方法時賦值

private void Update()
{
    transform.position=players.position+playmover;
    transform.LookAt(players);
}

又或者使用Cinemachine。它同樣可以適用於靜頭跟蹤

在靜頭跟蹤可以使用兩個辦法:

一、除了用傳統的辦法,定義一個參數,然后將player的值拉近這個參數
例如:pulic Transform player
void update()
{
      transfrom.position=new Vector3(player.position.x,0,-10)  //設置靜態跟蹤的參數,x,有,z軸的值,其中x的值是跟蹤人物的變化
}

二、在unity的Windows->Package manager->All packages選擇Cinemachine安裝。
再在Cinemachine中選擇Create 2D Camera,再在Hierarchy中選擇出現的CM vcam1,再在Inspector中將需要跟蹤的物體(Player)拖入到Follow
CM vcam中的Body的是調節攝像頭各種參數。

在背景跳出鏡頭的處理中,我們可以在CV vcam1中的Inspector界面的Add Extension中選擇Cinemachine Confiner(它需要背景添加一個Conllider)
我們在背景中選擇添加Polyon Collider2D將背景用Edit Collider編輯,同時我們得將Is Trigger勾選。然后回到Cv vcam1中在Cinemachine Confiner中將Bounding Shape 2D的選擇為背景的Collider


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM