最近做項目的時候出現(xiàn)的需求,需要機動車在高速剎車的時候相機視角出現(xiàn)延遲的感覺,我試了論壇上很多中相機跟隨的辦法,都出現(xiàn)了一些或多或少的問題,在汽車轉(zhuǎn)彎的時候,視角會發(fā)生很大的轉(zhuǎn)角。導(dǎo)致視角出現(xiàn)很大的偏差看不到汽車駕駛員本身的視角。
終于! 找到一個可以執(zhí)行的,使用平滑阻尼使相機與汽車永遠保持比例距離。
使用平滑阻尼和平滑阻尼角。
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);
}
}