Cam
2 participantes
Página 1 de 1
Cam
Pessoal, Fiz um controller para o meu jogador (seguindo alguns vídeos), e ele tem um "pequeno" bug...
Ele fica rodando em todos os eixos quando vc vira, tipo, não só ai invez do X, ele vira no Y tb..
alguém poderia me ajudar??
script:
Script do Joystick:
Ele fica rodando em todos os eixos quando vc vira, tipo, não só ai invez do X, ele vira no Y tb..
alguém poderia me ajudar??
script:
- Código:
[HideInInspector]
public Vector2 TouchDist;
[HideInInspector]
protected Vector2 PointerOld;
[HideInInspector]
protected int PointerId;
[HideInInspector]
public bool Pressed;
// Update is called once per frame
void Update()
{
if (Pressed)
{
if (PointerId >= 0 && PointerId < Input.touches.Length)
{
TouchDist = Input.touches[PointerId].position - PointerOld;
PointerOld = Input.touches[PointerId].position;
}
else
{
TouchDist = new Vector2(Input.mousePosition.x, Input.mousePosition.y) - PointerOld;
PointerOld = Input.mousePosition;
}
}
else
{
TouchDist = new Vector2();
}
}
public void OnPointerDown(PointerEventData eventData)
{
Pressed = true;
PointerId = eventData.pointerId;
PointerOld = eventData.position;
}
public void OnPointerUp(PointerEventData eventData)
{
Pressed = false;
}
Script do Joystick:
- Código:
protected RectTransform Background;
protected bool Pressed;
protected int PointerId;
public RectTransform Handle;
[Range(0f,2f)]
public float HandleRange = 1f;
[HideInInspector]
public Vector2 InputVector = Vector2.zero;
public Vector2 AxisNormalized { get { return InputVector.magnitude > 0.25f ? InputVector.normalized : (InputVector.magnitude < 0.01f ? Vector2.zero : InputVector * 4f); } }
void Start()
{
if (Handle == null)
Handle = transform.GetChild(0).GetComponent<RectTransform>();
Background = GetComponent<RectTransform>();
Background.pivot = new Vector2(0.5f, 0.5f);
Pressed = false;
}
void Update()
{
if (Pressed)
{
Vector2 direction = (PointerId >= 0 && PointerId < Input.touches.Length) ? Input.touches[PointerId].position - new Vector2(Background.position.x, Background.position.y) : new Vector2(Input.mousePosition.x, Input.mousePosition.y) - new Vector2(Background.position.x, Background.position.y);
InputVector = (direction.magnitude > Background.sizeDelta.x / 2f) ? direction.normalized : direction / (Background.sizeDelta.x / 2f);
Handle.anchoredPosition = (InputVector * Background.sizeDelta.x / 2f) * HandleRange;
}
}
public void OnPointerDown(PointerEventData eventData)
{
Pressed = true;
PointerId = eventData.pointerId;
}
public void OnPointerUp(PointerEventData eventData)
{
Pressed = false;
InputVector = Vector2.zero;
Handle.anchoredPosition = Vector2.zero;
}
iToddy- Avançado
- PONTOS : 2276
REPUTAÇÃO : 10
Respeito as regras :
Re: Cam
OBS: O primeiro script é do TouchField.
iToddy- Avançado
- PONTOS : 2276
REPUTAÇÃO : 10
Respeito as regras :
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos