Как сделать прекращение движения персонажа при отпускании кнопки?
Я создал кнопку в юнити 2д, и в OnClick написал метод rmove со следующим содержанием
public void rmove()
{
rb.velocity = new Vector2(2.0f, 0.0f);
}
По моей задумке при нажатии на кнопку персонаж должен идти вперед, а при отпускании - остановиться. Работает наполовину так как при нажатии он идет, но при отпускании не останавливается.
Ответы (2 шт):
Боюсь твоя задумка не умеет ходить сквозь бетонные стены реальности.
Кнопка выполняет функцию, как ни странно, кнопки и реагирует только на единственное событие клика. Что-то обрабатывающее два состояния вкл/выкл это toggle. Тебе же нужен toggle меняющий состояния зажатием, что чем-то напоминает кнопку.
Все события UI в Unity обрабатываются через интерфейсы:
- IPointerDownHandler нажатие на объект
- IPointerUpHandler разжатие объекта (если он был ранее нажат)
Таких интерфейсов много, на все случаи. Но на объекте должен быть Image или любой другой наследник Graphic, с полем Raycast Target ☑.
public void rmove(float _coif)
{
rb.velocity = new Vector2(2.0f*coif, 0.0f);
}
Делаем вот так и при ЗАЖАТИИ (down) копки вызываем метод и передаем туда (в _coif) 1, а при ОТПУСКАНИИ (up) кнопку передаём туда 0. Таким образом когда вы отпустите кнопку, то скорость сделается на 0 и перс остановиться.
И это лучше всего сделать в EventTrigger (компонент, который лучше всего наложить на Image), кнопками не советую пользоваться :)