我正在制作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
返回目标位置。
答案 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。
或
使用所有相同的控件设置在对象内创建空对象,并使用空白空间而不是对象。