Камера неправильно центрируется между 2 игровыми объектами - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть кнопка, которая заставляет MainCamera переключаться между несколькими объектами.

Например, есть [StartPoint, CheckPoint, CheckPoint, EndPoint]

Я хочукамера для непрерывного переключения через контрольные точки, такие как запятая между контрольными точками.^^

Этот код является фактическим переключением положения позиции для основной камеры (где может быть ошибка)

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;
}

Камера идеально подходит дляпервые 2 контрольные точки (либо StartPoint & EndPoint, либо StartPoint & CheckPoint) после того, как камера остается в том же положении или выключена по паре значений.Я проверил с помощью Debug.Log ();чтобы увидеть, есть ли у камеры правильные игровые объекты между ними и так ли это, почему она не работает?

1 Ответ

0 голосов
/ 22 декабря 2018

Центральная точка должна быть средним значением всех точек, поэтому вам нужно сложить свои точки, а не вычесть их, а затем разделить результат на число точек, включенных в среднее значение.

center = sum(points) / count(points)так что center = (a + b) / 2

В качестве альтернативы, вы можете использовать Vector3.Lerp(a, b, 0.5f), если вы найдете, что это более читабельно, хотя технически это будет медленнее, так как это и вызов метода, и больше операций, если толькокомпилятор делает закулисные вещи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...