Mobile joystick OnPointerUp causes error
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.
Answer by MarkusKarlsson · Oct 30, 2016 at 07:17 PM
Solved this problem by changing data.pointerEnter.name == "MobileJoystick_right" to data.rawPointerPress.name == "MobileJoystick_right".
Your answer
Follow this Question
Related Questions
how can i use the mobile input scripts? 0 Answers
My character carries on the run animation for a few seconds even after standing still 0 Answers
Virtual joysticks for mobile possible? (Mimic controller left & right analogs) 0 Answers
Why the AddForce fonction works differently on different mobiles ? 1 Answer
Failed Re pack resources Unity Android 0 Answers