Из-за Rigidbody2D.MovePosition() персонаж ОЧЕНЬ долго падает
При использовании Rigidbody2D.MovePosition() персонаж передвигается нормально, но он очень долго падает, как будто у персонажа есть крылья и он их раскрыл. Убирал Rigidbody2D.MovePosition() и проблема пропадала, персонаж падал как обычно. Вот код:
private void FixedUpdate()
{
Move();
}
public void Move()
{
_rigidbody.MovePosition(_rigidbody.position + Vector2.right * (_speed * Time.fixedDeltaTime));
}
Пробовал заменять FixedUpdate и Time.fixedDeltaTime на Update и Time.deltaTime
Ответы (1 шт):
Используя MovePosition, вы телепортируете объект, а не перемещаете его, поэтому скорость, которая была у объекта до перемещения обнуляется. Далее к объекту применяется физика, притягивает объект немного вниз. И так в каждом FixedUpdate поэтому объект не разгоняется.
Вместо MovePosition изменяйте скорость объекта напрямую через _rigidbody.velocity
Должно получиться что-то типа этого:
private void Move(float direction)
{
var velocity = _rigidbody.velocity;
velocity.x = _speed * direction;
_rigidbody.velocity = velocity;
}