相机未正确在2个游戏对象之间居中

时间:2018-12-21 22:00:30

标签: c# unity3d

我有一个按钮,可以使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()进行了检查;看看相机之间是否有正确的游戏对象,为什么呢?

1 个答案:

答案 0 :(得分:2)

中心点应该是所有点的平均值,因此您需要添加点而不是减去点,然后将结果除以平均值中包含的点数。

center = sum(points) / count(points),所以center = (a + b) / 2

或者,如果您发现更具可读性,则可以使用Vector3.Lerp(a, b, 0.5f),尽管从技术上来说会比较慢,因为它既是方法调用又是更多操作,除非编译器花哨了幕后的事情...