Как сделать прекращение движения персонажа при отпускании кнопки?

Рейтинг: 0Ответов: 2Опубликовано: 12.02.2023

Я создал кнопку в юнити 2д, и в OnClick написал метод rmove со следующим содержанием

public void rmove()
    {
        rb.velocity = new Vector2(2.0f, 0.0f);
    }

По моей задумке при нажатии на кнопку персонаж должен идти вперед, а при отпускании - остановиться. Работает наполовину так как при нажатии он идет, но при отпускании не останавливается.

Ответы

▲ 0

Боюсь твоя задумка не умеет ходить сквозь бетонные стены реальности.

Кнопка выполняет функцию, как ни странно, кнопки и реагирует только на единственное событие клика. Что-то обрабатывающее два состояния вкл/выкл это toggle. Тебе же нужен toggle меняющий состояния зажатием, что чем-то напоминает кнопку.

Все события UI в Unity обрабатываются через интерфейсы:

Таких интерфейсов много, на все случаи. Но на объекте должен быть Image или любой другой наследник Graphic, с полем Raycast Target ☑.

▲ 0
public void rmove(float _coif)
    {
        rb.velocity = new Vector2(2.0f*coif, 0.0f);
    }

Делаем вот так и при ЗАЖАТИИ (down) копки вызываем метод и передаем туда (в _coif) 1, а при ОТПУСКАНИИ (up) кнопку передаём туда 0. Таким образом когда вы отпустите кнопку, то скорость сделается на 0 и перс остановиться.

И это лучше всего сделать в EventTrigger (компонент, который лучше всего наложить на Image), кнопками не советую пользоваться :)