- Home /
MobileJoyStick not working on Unity Remote for iOS.
Hey peeps,
I have been working through a tutorial to convert a simple first person runner to iPhone. The issue at hand is that the MobileJoystick in the MobileSingleStickControl prefab will not react to touch on my iPhone5s through Unity Remote. It doesn't move at all. The odd thing is that using the mouse in my game window on my macbook will cause the joystick, and thus the first person character, to react accordingly. Even more odd is that the JumpButton located in the same prefab works fine on my phone through unity remote.
Below is the JoyStick Script:
 using System;
 using UnityEngine;
 using UnityEngine.EventSystems;
 
 namespace UnityStandardAssets.CrossPlatformInput
 {
     public class Joystick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
     {
         public enum AxisOption
         {
             // Options for which axes to use
             Both, // Use both
             OnlyHorizontal, // Only horizontal
             OnlyVertical // Only vertical
         }
 
         public int MovementRange = 100;
         public AxisOption axesToUse = AxisOption.Both; // The options for the axes that the still will use
         public string horizontalAxisName = "Horizontal"; // The name given to the horizontal axis for the cross platform input
         public string verticalAxisName = "Vertical"; // The name given to the vertical axis for the cross platform input
 
         Vector3 m_StartPos;
         bool m_UseX; // Toggle for using the x axis
         bool m_UseY; // Toggle for using the Y axis
         CrossPlatformInputManager.VirtualAxis m_HorizontalVirtualAxis; // Reference to the joystick in the cross platform input
         CrossPlatformInputManager.VirtualAxis m_VerticalVirtualAxis; // Reference to the joystick in the cross platform input
 
         void OnEnable()
         {
             CreateVirtualAxes();
         }
 
         void Start()
         {
             m_StartPos = transform.position;
         }
 
         void UpdateVirtualAxes(Vector3 value)
         {
             var delta = m_StartPos - value;
             delta.y = -delta.y;
             delta /= MovementRange;
             if (m_UseX)
             {
                 m_HorizontalVirtualAxis.Update(-delta.x);
             }
 
             if (m_UseY)
             {
                 m_VerticalVirtualAxis.Update(delta.y);
             }
         }
 
         void CreateVirtualAxes()
         {
             // set axes to use
             m_UseX = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyHorizontal);
             m_UseY = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyVertical);
 
             // create new axes based on axes to use
             if (m_UseX)
             {
                 m_HorizontalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(horizontalAxisName);
                 CrossPlatformInputManager.RegisterVirtualAxis(m_HorizontalVirtualAxis);
             }
             if (m_UseY)
             {
                 m_VerticalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(verticalAxisName);
                 CrossPlatformInputManager.RegisterVirtualAxis(m_VerticalVirtualAxis);
             }
         }
 
 
         public void OnDrag(PointerEventData data)
         {
             Vector3 newPos = Vector3.zero;
 
             if (m_UseX)
             {
                 int delta = (int)(data.position.x - m_StartPos.x);
                 delta = Mathf.Clamp(delta, - MovementRange, MovementRange);
                 newPos.x = delta;
             }
 
             if (m_UseY)
             {
                 int delta = (int)(data.position.y - m_StartPos.y);
                 delta = Mathf.Clamp(delta, -MovementRange, MovementRange);
                 newPos.y = delta;
             }
             transform.position = new Vector3(m_StartPos.x + newPos.x, m_StartPos.y + newPos.y, m_StartPos.z + newPos.z);
             UpdateVirtualAxes(transform.position);
         }
 
 
         public void OnPointerUp(PointerEventData data)
         {
             transform.position = m_StartPos;
             UpdateVirtualAxes(m_StartPos);
         }
 
 
         public void OnPointerDown(PointerEventData data) { }
 
         void OnDisable()
         {
             // remove the joysticks from the cross platform input
             if (m_UseX)
             {
                 m_HorizontalVirtualAxis.Remove();
             }
             if (m_UseY)
             {
                 m_VerticalVirtualAxis.Remove();
             }
         }
     }
 }
I have been beating my head against a brick wall for two days now. Any help would be greatly appreciated!
Thank you, Danny
Your answer
 
 
             Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
FPS Camera rotates on Z when using a joystick 0 Answers
How to use the joystick to control the character 2 Answers
Crossplatform Joystick cicular movement instead of square? 2 Answers
Problem iOS compile -library not found? 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                