在物体角色移动时用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的值是跟踪人物的变化
}
例如: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