public override void Disable() { m_TrackLeft = null; m_TrackRight = null; m_leftDelta = Vector2.zero; m_rightDelta = Vector2.zero; OnLeftDelta?.Invoke(m_leftDelta); OnRightDelta?.Invoke(m_rightDelta); UIT_JoyStick.Instance.OnDeactivate(); }
public override void Tick(float deltaTime) { if (UIT_JoyStick.Instance == null) { return; } m_rightDelta = Vector2.zero; int touchCount = Input.touchCount; for (int i = 0; i < touchCount; i++) { Touch t = Input.GetTouch(i); if (t.phase == TouchPhase.Began) { TouchTracker track = new TouchTracker(t); if (m_TrackLeft == null && track.isLeft && track.isDown) { m_TrackLeft = track; UIT_JoyStick.Instance.OnActivate(m_TrackLeft.v2_startPos); m_leftDelta = Vector2.zero; } else if (m_TrackRight == null && !track.isLeft) { m_TrackRight = track; } } else if (t.phase == TouchPhase.Ended || t.phase == TouchPhase.Canceled) { if (m_TrackLeft != null && t.fingerId == m_TrackLeft.m_Touch.fingerId) { m_TrackLeft = null; UIT_JoyStick.Instance.OnDeactivate(); m_leftDelta = Vector2.zero; } if (m_TrackRight != null && t.fingerId == m_TrackRight.m_Touch.fingerId) { m_TrackRight = null; } } else if (t.phase == TouchPhase.Moved) { if (m_TrackRight != null && t.fingerId == m_TrackRight.m_Touch.fingerId) { m_TrackRight.Record(t); m_rightDelta = t.deltaPosition; } else if (m_TrackLeft != null && t.fingerId == m_TrackLeft.m_Touch.fingerId) { m_TrackLeft.Record(t); m_leftDelta = UIT_JoyStick.Instance.OnMoved(t.position); } } } #if UNITY_EDITOR m_leftDelta = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")); m_rightDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y")); #endif if (OnCanSendDelta != null && !OnCanSendDelta()) { m_leftDelta = Vector2.zero; m_rightDelta = Vector2.zero; } OnLeftDelta?.Invoke(m_leftDelta); OnRightDelta?.Invoke(m_rightDelta); }