之后按空格键时,相机只会切换到目标,
没有平滑。
当您按下
space
源和目标都已更改,因此您可以立即设置变换的位置。
一旦lerp成功完成一次,就永远不会进行lerp
当然,除非我重新开始。
从文档:
1、时间。时间
这是自
开始
游戏的
2、矢量3。Lerp公司
参数t(时间)为
钳制到范围[0,1]
所以
Time.time
将继续上升,但
Lerp
将夹紧到最大值1。当您计算时
Time.time * 0.1 (your speed)
要达到你的目标需要10秒钟。任何超过10秒的内容都将被限制为1,这将导致立即跳转到您的目的地。使用
Time.deltaTime
相反
此外,您不需要多个摄影机来充当位置目标。一组变换就可以了。
综上所述,它应该是这样的:
public class CameraWaypoints : MonoBehaviour
{
public Transform[] CamPOVs;
public float _speed = 0.1f;
private Camera _main;
private int _indexTargetCamera;
void Awake ()
{
_main = Camera.main;
_indexTargetCamera = 0;
}
void Update ()
{
if (Input.GetKeyDown(KeyCode.Space))
{
_indexTargetCamera = ++_indexTargetCamera % CamPOVs.Length;
}
var time = Time.deltaTime * _speed;
// Alternatives to Lerp are MoveTowards and Slerp (for rotation)
var position = Vector3.Lerp(_main.transform.position, CamPOVs[_indexTargetCamera].position, time);
var rotation = Quaternion.Lerp(_main.transform.rotation, CamPOVs[_indexTargetCamera].rotation, time);
_main.transform.position = position;
_main.transform.rotation = rotation;
}
}