最近做项目的时候出现的需求,需要机动车在高速刹车的时候相机视角出现延迟的感觉,我试了论坛上很多中相机跟随的办法,都出现了一些或多或少的问题,在汽车转弯的时候,视角会发生很大的转角。导致视角出现很大的偏差看不到汽车驾驶员本身的视角。
终于! 找到一个可以执行的,使用平滑阻尼使相机与汽车永远保持比例距离。
使用平滑阻尼和平滑阻尼角。
public Transform target;
[Range(0f, 1f)]
public float positionModifier = 0.05f;
public float positionSmoothing = 0.2f;
private Vector3 initialPosition;
public Vector3 velocity;
private Vector3 prevVelocity;
private Vector3 acceleration;
private Vector3 accSpeed;
public TankDriverControl shipController;
public Rigidbody tankRigidbody;
void Start()
{
shipController = target.GetComponent<TankDriverControl>();
initialPosition = shipController.transform.InverseTransformPoint(transform.position);
}
void Update()
{
prevVelocity = velocity;
velocity = tankRigidbody.velocity;
acceleration = Vector3.SmoothDamp(acceleration, (velocity - prevVelocity) / Time.deltaTime, ref accSpeed, positionSmoothing);
transform.position = shipController.transform.TransformPoint(initialPosition - acceleration * positionModifier * 0.1f);
}
}