Задать вопрос
Alexeee
@Alexeee
Разработчик игр

Как двигать объект до определенной точки при помощи rigidbody.velocity?

У меня есть объект который движется при помощи velocity по X и Y.
При нажатии на кнопку он должен передвинуться на определенную Z координату.
Вот такой код просто движет его по Z координате
rigidbody3D = GetComponent<Rigidbody>();
...
rigidbody3D.velocity = new Vector3(rigidbody3D.velocity.x, rigidbody3D.velocity.y, layerLevelPosition[1].z);

Он движет так как нужно, он нужно зажимать кнопку и при этом объект движется дальше нужной Z координаты (layerLevelPosition[1].z).
transform.position = Vector3.MoveTowards(transform.position, new Vector3(transform.position.x, transform.position.y, layerLevelPosition[1].z),0.5f);

Этот код двигает объект до нужной Z координаты, но также нужно зажимать кнопку.

1) Возможно ли движение до определенной Z координаты при помощи velocity?
2) Есть ли метод, который сам "додвигает" объект до нужной точки или только через цикл?
  • Вопрос задан
  • 3283 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 2
@S0HardCore
1. Mathf.Clamp.
2. Цикл/корутины вместе с Vector3.Lerp.
Ответ написан
Комментировать
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Если двигать физический объект через трансформ, то можно огрести глюки симуляции и лишние пересчёты физики. Двигайте лучше через Rigidbody.position или Rigidbody.MovePosition.
Самостоятельно физические объекты двигаются только под действием сил, в вашем случае без циклов не обойтись.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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