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
posted @ 2020-03-07 22:49  PD_Ming  阅读(6273)  评论(0编辑  收藏  举报