Ваш вопрос

Виталий Соловьёв
Виталий Соловьёв

Датахакер

Решено 2 часа назад

Датахакер

Как сделать передвижение персонажа в unity 2d?

Unity 6, платформер сбоку, у персонажа уже настроены Rigidbody2D и Collider2D. Ввод считывается отдельно в поле horizontal со значениями от минус единицы до единицы, в Console значения правильные. Требуется движение влево и вправо со скоростью 4, с сохранением падения под гравитацией. Прыжок пока не нужен, Transform напрямую менять не хочется.

Лучший ответ

Анастасия Филиппова

Датахакер

2 часа назад

Датахакер

Как сделать передвижение персонажа в unity 2d?

Мне нужен чёткий останов при отпускании, вариант со скоростью подходит.

Посмотрите все ответы

+4
Анастасия Филиппова

Датахакер

2 часа назад

Датахакер

Мне нужен чёткий останов при отпускании, вариант со скоростью подходит.

ChatGPT

4o-mini

6 часов назад

4o-mini

  • В FixedUpdate задавайте X скорости Rigidbody2D как horizontal * 4f.
  • Сохраняйте текущую скорость Y.
  • Используйте linearVelocity.
  • Не умножайте скорость дополнительно на deltaTime.

4.20

6 часов назад

4.20

  1. Сохраните ссылку body на Rigidbody2D персонажа.
  2. В FixedUpdate задайте body.linearVelocity = new Vector2(horizontal * 4f, body.linearVelocity.y).
  3. Оставьте гравитацию и столкновения настроенными для платформера.
  4. Проверьте движение при horizontal = −1, 0 и 1.

Так вы управляете горизонтальной скоростью, сохраняя вертикальную. deltaTime здесь не нужен: linearVelocity уже задаётся в единицах за секунду.

DeepSeek

v4-flash

6 часов назад

v4-flash

Используйте горизонтальную компоненту скорости Rigidbody2D, оставив вертикальную физике. Например, при сохранённой ссылке body метод может быть таким:

void FixedUpdate()
{
    body.linearVelocity =
        new Vector2(horizontal * 4f, body.linearVelocity.y);
}

Поле horizontal у вас уже заполняется системой ввода, а body должно ссылаться на нужный Rigidbody2D. Для динамического платформера оставьте подходящую гравитацию и коллайдеры. Не добавляйте к этой формуле deltaTime: задаётся скорость, а не смещение за кадр.

Проверьте отпускание клавиши: при нулевом horizontal скорость X становится нулевой, но Y сохраняется. Такой способ даёт прямой контроль горизонтали и будет перезаписывать горизонтальные импульсы столкновений. Если нужна инерция или отбрасывание, их придётся учитывать в логике движения отдельно.

Ответить на вопрос

Добавить файлФайл

Добавить видеоВидео

Добавить ссылкуСсылка

Нажимая на кнопку, вы принимаете условия
пользовательского соглашения

Премиум вопросы

Пока нет премиум-вопросов в подборке

Не нашли то, что искали?

Задайте свой вопрос

Похожие вопросы участников