我有一个按钮,可以使MainCamera在处于多个对象中间的状态之间切换。
例如,有[StartPoint,CheckPoint,CheckPoint,EndPoint]
我希望相机在检查点之间连续切换,例如检查点之间的逗号。 ^^
此代码是对MainCamera (可能存在错误的地方)
public void SwitchCameraBetween(GameObject nextPoint, GameObject afterNextPoint)
{
Vector3 centerPoint = (afterNextPoint.transform.position - nextPoint.transform.position) / 2;
centerPoint.z = -10;
float cameraSize = (afterNextPoint.transform.position - nextPoint.transform.position).magnitude - nextPoint.transform.localScale.x;
mainCamera.transform.position = centerPoint;
mainCamera.orthographicSize = cameraSize / 3;
}
在相机停留在相同位置或关闭几个值后,相机可以切换到前两个检查点(StartPoint&EndPoint或StartPoint&CheckPoint)完美。我通过使用Debug.Log()进行了检查;看看相机之间是否有正确的游戏对象,为什么呢?
答案 0 :(得分:2)
中心点应该是所有点的平均值,因此您需要添加点而不是减去点,然后将结果除以平均值中包含的点数。
center = sum(points) / count(points)
,所以center = (a + b) / 2
或者,如果您发现更具可读性,则可以使用Vector3.Lerp(a, b, 0.5f)
,尽管从技术上来说会比较慢,因为它既是方法调用又是更多操作,除非编译器花哨了幕后的事情...