Сделайте так, чтобы камера и окружение плавно следовали за игроком, а также масштабировались

Я делаю двухмерную гоночную игру с боковым скроллером. Игрок — это автомобиль, который движется по уже созданному двухмерному ландшафту. Камера следует за игроком.

Я также хотел создать больше деталей, заставив фон следовать оси Y игрока, чтобы фон не выглядел как простая картинка.

Эффект, который я хочу воспроизвести, заключается в том, что когда игрок прыгает, камера просто отдаляется. Я использую перспективную камеру, поэтому она уменьшает масштаб, перемещая ее немного (больше) от игрока. Эффект не гладкий.

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

Я пробовал использовать гладкую влажную поверхность, которая давала мне эффект пружины, который здесь не нужен. Я использовал Lerp, который просто не работает вообще, он чертовски медленный, и когда я делаю его быстрым, это такое же нежелательное поведение. MoveTowards немного работает, но не совсем. Гладкость просто не то, что я хочу.

void FixedUpdate()
{
    if (CarController.Instance != null)
    {
        newPos = TargetPos + camOffSet;
        if (!CarController.Instance.IsGrounded && CarController.Instance.CanZoomOut)
        {
            float zz = Mathf.Clamp(-10 - newPos.y, -20, -10);
            newPos.z = Mathf.Clamp(-10 - newPos.y, -20, -10);
            newPos.x += (zz * -0.4f);
        }
        else
        {
            newPos.z = -10;
        }
        transform.position = Vector3.MoveTowards(transform.position, newPos, speed * Time.deltaTime);
    }
}

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


person Adnan Nazir    schedule 02.01.2018    source источник


Ответы (1)


Не могли бы вы прислать пример кода, как вы двигаете камеру, потому что без примеров сложно понять, что происходит?

Обычно достаточно использовать комбинацию Vector3.Lerp и Time.deltaTime

person ttohin    schedule 02.01.2018
comment
Здравствуйте, я добавил код. На самом деле я хотел, чтобы моя камера игнорировала турбулентность. Видео проверки фокусировки моей камеры youtu.be/xO_mEXo6mNA - person Adnan Nazir; 03.01.2018