@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 так же пробовал.
  • Вопрос задан
  • 329 просмотров
Пригласить эксперта
Ответы на вопрос 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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