我在一个2d的平台游戏中工作,我使用了电影摄像机和视差脚本来给出一个很好的效果,但是视差在剧烈的震动和震动,我发现那是因为摄像机晃动的原因,当我禁用它的时候,它工作的很顺利。
这是视差码
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 在这里输入图像描述的设置。
请给我任何帮助,我在那个问题上找不到任何帮助
发布于 2022-06-21 13:39:05
为了避免任何类型的抖动,在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);
}https://stackoverflow.com/questions/72701506
复制相似问题