CineMachine Camera因为晃动而破坏了2d视差效果



我在一个2d平台游戏中工作,我应用了cinemachine相机和视差脚本来获得良好的效果,但是视差正在摇晃和震动,我发现cinamchine是原因,因为相机摇晃,当我禁用cinemachine时,它工作得很顺利

这里是视差代码
private float startpos;
private GameObject cam;
[SerializeField] private float parallax;
[SerializeField] private float speed = 0.1f;
// Start is called before the first frame update
void Start()
{
cam = GameObject.Find("Main Camera");
startpos = transform.position.x;
}
// Update is called once per frame
void Update()
{
float distance = (cam.transform.position.x * parallax);
transform.position = new Vector3(startpos + distance, transform.position.y, transform.position.z);
}

和MC vcam1的设置输入图片描述

我找不到任何解决那个问题的方法

你可以尝试将CinemachineBrain的更新方法设置为Manual update,然后在另一个脚本中调用ManualUpdate()。

using UnityEngine;
using Cinemachine;
public class ManualBrainUpdate : MonoBehaviour
{
public CinemachineBrain cineBrain;
public float smoothTime;
private void Start()
{
cineBrain = GetComponent<CinemachineBrain>();
}
void Update()
{
cineBrain.ManualUpdate();
}
}

为了避免Unity中的任何抖动(就像相机在抖动时添加到distance),请使用各种SmoothDamp功能,例如https://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.html:

public float smoothTime = 0.3f; // adjust this to taste
private float distance;
private Vector3 velocity = Vector3.zero;
private Vector3 targetPos
void Update()
{
distance = cam.transform.position.x * parallax;
targetPos = new Vector3(startpos + distance, transform.position.y, transform.position.z)
transform.position = Vector3.SmoothDamp(transform.position, targetPos, ref velocity, smoothTime);
}

最新更新