I’m trying to figure out how to detect if user has a finger on an UI joystick even if he is not moving it (horizontal & vertical axis both return zero).I found these OnPointerDown and OnPointerUp methods from Standard assets Joystick script that I could use. With this piece of script I’m able to detect when joystick is pressed and when press ends:
public void OnPointerUp(PointerEventData data)
{
transform.position = m_StartPos;
UpdateVirtualAxes(m_StartPos);
// line below causes the error
if (data.pointerEnter.name == "MobileJoystick_right") {
rightJoystickPressed = false;
}
}
public void OnPointerDown(PointerEventData data) {
if (data.pointerEnter.name == "MobileJoystick_right") {
rightJoystickPressed = true;
}
}
As I said everything works just fine BUT if I drag the joystick very far from the origin and release it I get this error:
NullReferenceException: Object reference not set to an instance of an object UnityStandardAssets.CrossPlatformInput.Joystick.OnPointerUp (UnityEngine.EventSystems.PointerEventData data) (at Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs:105) UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerUpHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:45) UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerUpHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:269) UnityEngine.EventSystems.EventSystem:Update()
This only happens if I drag joystick further away from the origin than it can move (I have set the movement range to 100) and then release it. No idea why this is happening. Just to be clear: if I drag joystick let’s say 80 (some units) from its origin and release the joystick everything is fine. But if I drag joystick let’s say 150 units from the origin and release it I get the error above.