Задать вопрос
@Rem531

Как избавиться от тряски персонажа при плавном перемещении камеры за ним?

При попытке задать положение камеры по средством метода Lerp() или SmoothDamp() происходит тряска персонажа, при этом ничего из окружения больше не трясет. Вот код камеры и персонажа
public Transform target;
    public Vector3 offset;
    public float SmoothSpeed;

    void FixedUpdate()
    {
        transform.position = Vector3.Lerp(transform.position, target.position + offset, SmoothSpeed);
    }

Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    private void FixedUpdate()
    {
        rb.AddForce(2 * transform.forward - rb.velocity, ForceMode.VelocityChange);
    }

Пробовал помещать строку перемещения камеры в Update(), LateUpdate() и даже через корутины. У персонажа в Rigidbody,Interpolate стоит - Interpolate. При билде игры происходит тоже самое. Пробовал на 21 20 и 19 версиях юнити. Проект создавал пустой, на сцене только камера, куб (персонаж) и поверхность для передвижения. Умножать скорость на Time.deltaTime/fixedDeltaTime так же пробовал.
  • Вопрос задан
  • 541 просмотр
Подписаться 2 Сложный Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • Skillbox
    Middle-разработчик игр на Unity
    3 месяца
    Далее
  • GB (GeekBrains)
    Разработчик Игр на Unity
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@GLeBaTi
У камеры:
1) Заменить FixedUpdate на Update (т.к. fixedUpdate реже вызывается)
2) Использовать Time.deltaTime*SmoothSpeed вместо fixedDeltaTime(этот для FixedUpdate)

void Update()
{
   transform.position = Vector3.Lerp(transform.position, target.position + offset, Time.deltaTime*SmoothSpeed);
}

Можно попробовать MoveTowards вместо Lerp.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы