Я создаю контроллер реактивного ранца (мобильный), где левый джойстик используется для управления движением вперед и назад, а правый джойстик используется для управления вращением и движением вверх. Я хочу, чтобы игрок поднимался вверх всякий раз, когда пользователь касается правого джойстика, даже если горизонтальная и вертикальная оси возвращают ноль. Итак, если есть палец на правом джойстике, плеер поднимается вверх, аналогично GetButton или GetKey (какой-то код клавиши).
Unity 5: как узнать, находится ли палец на джойстике, даже если он находится на нуле по горизонтали и вертикали
comment
Я в замешательстве. Это физический контроллер или элементы пользовательского интерфейса, функционирующие как элементы управления? Если мы говорим об элементах пользовательского интерфейса, просто добавьте в класс джойстика некоторую общедоступную функцию, которая возвращает true при выборе джойстика.
- person bpgeck   schedule 30.10.2016
comment
Да, мы говорим об элементе пользовательского интерфейса, а не о физическом контроллере. Проблема в том, что я не могу найти способ вернуть true, если на джойстике есть палец. Например, Input.GetAxis(HorizontalRotate) возвращает значение 0, даже если на джойстике нет пальца, поэтому я не могу его использовать. Input.GetButton(HorizontalRotate) возвращает false несмотря ни на что.
- person Jonathan   schedule 30.10.2016
Ответы (1)
Надеюсь, это поможет кому-то в будущем:
Я обнаружил, что есть методы OnPointerUp и OnPointerDown, которые можно использовать для проверки того, нажат ли джойстик или нет. Самый простой способ использовать их — изменить несколько вещей в Standard Assets > Utility > Joystick.cs. Вот как эти методы выглядят после моих изменений:
public void OnPointerUp(PointerEventData data)
{
transform.position = m_StartPos;
UpdateVirtualAxes(m_StartPos);
if (data.rawPointerPress.name == "MobileJoystick_right") {
rightJoystickPressed = false;
}
}
public void OnPointerDown(PointerEventData data) {
if (data.pointerEnter.name == "MobileJoystick_right") {
rightJoystickPressed = true;
}
}
Так что в основном я просто добавил операторы If. Теперь я могу получить доступ к логическому значению rightJoystickPressed из любого другого скрипта, чтобы проверить, нажат ли джойстик, даже если он не перемещается.
person
Jonathan
schedule
30.10.2016