2016-10-29 2 views
0

Я создаю контроллер JetPack (мобильный), где левый джойстик используется для управления движениями вперед и назад, а правый джойстик используется для управление вращением и движениями вверх. Я хочу, чтобы игрок поднимался вверх, когда пользователь касался правого джойстика, даже если горизонтальный & & вертикальные оси возвращают ноль. Поэтому, если есть палец на правый джойстик, игрок идет вверх, подобно GetButton или GetKey (некоторый keycode).Unity 5: Как узнать, находится ли палец на джойстике, даже если он находится на горизонтальном и вертикальном нуле

+1

Я смущен. Является ли это физическим контроллером или элементами пользовательского интерфейса, которые функционируют как элементы управления? Если мы говорим об элементах пользовательского интерфейса, просто добавьте какую-то публичную функцию в ваш класс джойстика, который возвращает true при выборе джойстика. – bpgeck

+0

Да, мы говорим об элементе пользовательского интерфейса, а не о физическом контроллере. Проблема в том, что я не могу найти какой-либо метод для возврата true, если есть палец на джойстике. Например, Input.GetAxis («HorizontalRotate») возвращает значение 0, даже если на джойстике нет пальца, поэтому я не могу его использовать. Input.GetButton («HorizontalRotate») возвращает false независимо от того, что. – Jonathan

ответ

1

Надеется, что это помогает кто-то в будущем:

я узнал, есть OnPointerUp и OnPointerDown метода, которые могут быть использованы для проверки, если джойстик нажат или нет. Самый простой способ использовать их - изменить несколько вещей в стандартном активе> Утилита> 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 boolean из любого другого скрипта, чтобы проверить, нажат ли джойстик, даже если он не перемещен.

Смежные вопросы