[英]Move camera to a gameobjects forward position
The code for the camera is this... transform.position = new Vector3(car.transform.position.x-posX+carPos, car.transform.position.y+posY, car.transform.position.z-posZ) + car.transform.forward * (Mathf.Clamp(speed, 0, 0.70f)*40);
这基本上等同于让汽车 x、y 和 z 将它移到后面和左边一点。 + car.transform.forward * (Mathf.Clamp(speed, 0, 0.70f)*40);
是说根据汽车的速度向前看一点点,所以当我们静止时,汽车位于相机的中心,当汽车快速行驶时,相机稍微向前一点。 我遇到的问题是,当汽车快速转弯时,最后一部分会使相机快速转动。 我希望我可以平滑相机的 position 以追逐它需要跟踪的 position。 如果您可以将现有的 position 想象成车前的一个点,我希望相机能够平稳地追逐那个点,而不是非常活泼。
所以不知道如何 go 关于这个。 我需要获取当前的 position 和 Lerp 到下一帧 position 吗? 在我看来,在一帧的一小部分距离之间徘徊并不合适。 它太活泼了,我宁愿它是平滑的。
谢谢
我会为此使用Vector3.SmoothDamp
。 为了使其工作,您需要跟踪相机的(相对)速度以及由于帧之间的速度而导致的相机偏移。
总而言之,您可以使用一些参数进行微调以使其适合,这可能如下所示:
Vector3 camVelocity = Vector3.zero;
Vector3 camSpeedOffset = Vector3.zero;
float cameraSmoothTime = 0.1f;
float maxCameraOffsetVelocity = 1f;
...
Vector3 camSpeedOffsetTarget = car.transform.forward * (Mathf.Clamp(speed, 0, 0.70f)*40);
camSpeedOffset = Vector3.SmoothDamp(camSpeedOffset, camSpeedOffsetTarget,
ref camVelocity, cameraSmoothTime, maxCameraOffsetVelocity);
transform.position = new Vector3(
car.transform.position.x-posX+carPos,
car.transform.position.y+posY,
car.transform.position.z-posZ)
+ camSpeedOffset;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.