从359旋转到0时Unity Camera闪烁

时间:2018-08-15 21:58:45

标签: c# unity3d

我正在使用这个简单的CameraFollow脚本来使摄像机跟随玩家的动作。问题是我的播放器可以旋转完整的360度,并且相机必须随之旋转。这很好用,除非完成一个完整的回合。当播放器变换从359度返回到0时,相机会闪烁,因为它会进行完整的向后360度循环以赶上,而不是移动1度以赶上。我怎样才能解决这个问题?
在下面的代码中,“目标”是我的播放器,“ trans”是摄像机的变换。还值得注意的是,如果播放器正好在0度处停止,则由于某种原因它会跳回180度。

 public class CameraFollow : MonoBehaviour {

   [SerializeField] Transform target;
   [SerializeField] Vector3 defaultDistance = new Vector3(0f, 3.5f, -12f);
   [SerializeField] float distanceDamp = 0.05f;
   [SerializeField] Vector3 velocity = Vector3.one;

   Transform trans;

   private void Awake()
   {
       trans = transform;
   }

   private void FixedUpdate()
   {
       Vector3 toPos = target.position + (target.rotation * defaultDistance);
       Vector3 curPos = Vector3.SmoothDamp(trans.position, toPos, ref velocity, distanceDamp);
       trans.position = curPos;
       trans.up = target.up;
   }
}

1 个答案:

答案 0 :(得分:0)

我通过更改
的最后一行解决了我的问题 trans.up = target.up;

trans.rotation = target.rotation;