Джойстик при клике получает координаты 0, 0

219
27 февраля 2018, 02:21

При клике либо нажатии и удержании джойстик получает координаты близкие к нулю и смещается в левый нижний угол.

При движении мышкой или пальцем он позиционируется под указателем и ведет себя ожидаемо.

В чем проблема такого стартового его поведения?

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class ActorMobileController : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler {
private Image joystickBG;
[SerializeField]
private Image joystick;
private Vector2 inputVector;
// Use this for initialization
void Start()
{
    joystickBG = GetComponent<Image>();
    joystick = transform.GetChild(0).GetComponent<Image>();
}
public virtual void OnPointerDown(PointerEventData ped)
{
    OnDrag(ped);
}
public virtual void OnPointerUp(PointerEventData ped)
{
    inputVector = Vector2.zero;
    //Возврат джойстика в центр
    joystick.rectTransform.anchoredPosition = Vector2.zero;
}
public virtual void OnDrag(PointerEventData ped)
{
    Vector2 pos;
    if(RectTransformUtility.ScreenPointToLocalPointInRectangle(joystickBG.rectTransform, ped.position, ped.pressEventCamera, out pos))
    {
        //Получение координат позиции касания джойстика
        pos.x = (pos.x / joystickBG.rectTransform.sizeDelta.x);
        pos.y = (pos.y / joystickBG.rectTransform.sizeDelta.y);
        inputVector = new Vector2(pos.x * 2 - 1, pos.y * 2 - 1);
        inputVector = (inputVector.magnitude > 1.0f) ? inputVector.normalized : inputVector;
        joystick.rectTransform.anchoredPosition = new Vector2(inputVector.x * (joystickBG.rectTransform.sizeDelta.x / 2), inputVector.y * (joystickBG.rectTransform.sizeDelta.y / 2));
    }
}
public float Horizontal()
{
    print("input" + inputVector);
    if (inputVector.x != 0) return inputVector.x;
    else return Input.GetAxis("Horizontal");
}
public float Vertical()
{
    if (inputVector.y != 0) return inputVector.y;
    else return Input.GetAxis("Vertical");
}
}

конкретно вот этот узел

//Получение координат позиции касания джойстика
pos.x = (pos.x / joystickBG.rectTransform.sizeDelta.x);
pos.y = (pos.y / joystickBG.rectTransform.sizeDelta.y);

получая координаты например 40, 40, на выходе дает значения близкие к нулю. Почему же?

READ ALSO
Массив с временем жизни элементов

Массив с временем жизни элементов

ПриветКакие есть best practicies для такой задачи: хранить неопределенное количество элементов за последние n минут? Есть ли какие-то готовые реализации...

175
Изменить данные в tooltip Chart js

Изменить данные в tooltip Chart js

Подскажите, пожалуйста, как в Chart js убрать(изменить на свое), например 1999 в tooltip и оставить только Asia:3700

226
Цели Google Analytics

Цели Google Analytics

Вставляю вот этот скрипт для ГАналитикс

220