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) Есть ли метод, который сам "додвигает" объект до нужной точки или только через цикл?
  • Вопрос задан
  • 3144 просмотра
Решения вопроса 2
@S0HardCore
1. Mathf.Clamp.
2. Цикл/корутины вместе с Vector3.Lerp.
Ответ написан
Комментировать
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Если двигать физический объект через трансформ, то можно огрести глюки симуляции и лишние пересчёты физики. Двигайте лучше через Rigidbody.position или Rigidbody.MovePosition.
Самостоятельно физические объекты двигаются только под действием сил, в вашем случае без циклов не обойтись.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы