当我跟随的角色停止并继续移动时,我试图平稳地移动和旋转相机,我不明白为什么它会断断续续。我试图在更新中计算 _time 但它没有任何区别。
相机移动代码:
using System.Collections;
using UnityEngine;
using static UnityEditor.PlayerSettings;
public class CameraMover : MonoBehaviour
{
[SerializeField] private Vector3 _positionInShelter;
[SerializeField] private Quaternion _rotationInShelter;
[SerializeField] private GameObject _character;
[SerializeField] private float _speed;
private Quaternion _defaultRotation;
private Vector3 _defaultPosition;
private float _distanceX;
private float _time;
private void Awake()
{
_distanceX = _character.transform.position.x - transform.position.x;
_defaultPosition = transform.position;
_defaultRotation = transform.rotation;
}
private void Update()
{
transform.position = new(_character.transform.position.x - _distanceX, transform.position.y, transform.position.z);
}
private IEnumerator InShelterPosition(Vector3 position, Quaternion rotation)
{
_time = 0f;
while (_time != 1f)
{
yield return new WaitForEndOfFrame();
_time += Time.fixedDeltaTime;
transform.position = Vector3.Lerp(transform.position, position, _time);
transform.rotation = Quaternion.Lerp(transform.rotation, rotation, _speed * _time);
}
}
public void CameraInShelterPosition()
{
StartCoroutine(InShelterPosition(_positionInShelter, _rotationInShelter));
}
public void CameraDefaultPosition()
{
StartCoroutine(InShelterPosition(_defaultPosition, _defaultRotation));
}
}