跟随GameObject并同时更改摄像机视图

时间:2015-08-10 07:03:36

标签: c# unity3d camera unityscript

我正在制作3D侧卷轴游戏,我的相机使用Vector3.lerp跟踪我的角色。

目前我的相机正在侧面观看播放器,但在某些时候我希望相机转换到TopView(从顶部看字符),同时保持角色的某个高度。

我通过创建命名为SideView和TopView的相机设置来完成此操作。现在的问题是相机确实从SideView转换到TopView,但在转换过程中相机在lerp结束时抖动(当相机几乎处于目标位置时)。

如何使其平滑(停止相机抖动)?

注意:相机和角色都在移动。

这里我的相机的源代码如下:

void LateUpdate () 
{
    if(currentCameraSettings != null && target.transform != null)
    {
        targetPos = SetCameraTargetPos(target.transform);

        if(duration != 0)
        {
            transform.position = Vector3.Lerp(transform.position,targetPos,(Time.time - startTime ) / duration );
        }
        else
        {
            transform.position = targetPos;
        }

        SetCameraRotation();
    }
}
在距离目标角色添加高度和z轴距离后,

SetCameraTargetPos返回目标位置。

2 个答案:

答案 0 :(得分:3)

听起来Lerp有错误的情况。我想你想在这里使用的是MoveTowards

float step = speed * Time.deltaTime;
transform.position = Vector3.MoveTowards(transform.position, target.position, step);

如果它仍然" jaggedy"对你而言,请尝试使用Time.smoothDeltaTime

答案 1 :(得分:0)

抱歉英文不好。

如果你想防止相机抖动你使用刚体属性。 冻结x,y,z。

使用所有相同的控件设置在对象内创建空对象,并使用空白空间而不是对象。