我正在使用这个简单的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;
}
}
答案 0 :(得分:0)
我通过更改
的最后一行解决了我的问题
trans.up = target.up;
到
trans.rotation = target.rotation;