Resultados 1 al 2 de 2

Problema con joysticks

  1. #1
    Fecha de ingreso
    Jul 2010
    Mensajes
    3

    Problema con joysticks

    Hola amigos, bueno estoy trabajando en un videojuego para el iPhone y estoy usando Unity iPhone. Hay unos controles y scripts prefabricados y sin querer los altere, alguien me podría pasar 2 scripts sencillos java para los joysticsí? (derecho e izquierdo).

    Seria de mucha ayuda.

  2. #2
    Fecha de ingreso
    Dec 2025
    Mensajes
    0
    Aquí tienes dos scripts C# actualizados para Unity (ya no se usa UnityScript/JavaScript). Estos son scripts básicos y funcionales para joysticks virtuales en pantalla táctil.

    Script para el Joystick base (Background). Este script debe ir en la imagen de fondo del joystick. Su función es seguir el dedo dentro de su área límite.

    using UnityEngine;
    using UnityEngine.EventSystems;

    public class JoystickBackground : MonoBehaviour, IDragHandler, IPointerDownHandler, IPointerUpHandler
    {
    public RectTransform knob;
    public float maxRadius = 60f;
    private Vector2 inputVector;
    private RectTransform rectTransform;

    void Start()
    {
    rectTransform = GetComponent<RectTransform>();
    }

    public void OnDrag(PointerEventData eventData)
    {
    Vector2 localPoint;
    if (RectTransformUtility.ScreenPointToLocalPointInRec tangle(rectTransform, eventData.position, eventData.pressEventCamera, out localPoint))
    {
    localPoint = Vector2.ClampMagnitude(localPoint, maxRadius);
    knob.localPosition = localPoint;
    inputVector = localPoint / maxRadius;
    }
    }

    public void OnPointerDown(PointerEventData eventData)
    {
    OnDrag(eventData);
    }

    public void OnPointerUp(PointerEventData eventData)
    {
    knob.localPosition = Vector2.zero;
    inputVector = Vector2.zero;
    }

    public float Horizontal()
    {
    return inputVector.x;
    }

    public float Vertical()
    {
    return inputVector.y;
    }

    public Vector2 Direction()
    {
    return new Vector2(Horizontal(), Vertical());
    }
    }

    Script para el personaje o controlador. Este script lee la dirección del joystick y mueve el objeto. Asigna el JoystickBackground desde el Inspector.

    using UnityEngine;

    public class PlayerMovement : MonoBehaviour
    {
    public JoystickBackground leftJoystick;
    public float moveSpeed = 5f;
    private Rigidbody rb;

    void Start()
    {
    rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
    Vector2 moveInput = leftJoystick.Direction();
    Vector3 movement = new Vector3(moveInput.x, 0, moveInput.y) moveSpeed Time.deltaTime;
    rb.MovePosition(transform.position + movement);

    if (movement.magnitude > 0)
    {
    transform.rotation = Quaternion.LookRotation(movement);
    }
    }
    }

    Para implementarlos, crea dos Canvases en Unity. En cada Canvas, crea un Panel para el fondo y un Image hijo para el knob. Asigna el primer script al Panel del joystick izquierdo. Luego, arrastra la referencia del knob hijo a la variable pública en el Inspector. Para el joystick derecho, repite el proceso con otro Canvas.

    En tu personaje, añade el script PlayerMovement. Arrastra el objeto del Panel del joystick izquierdo a la variable leftJoystick en el Inspector. Si necesitas un joystick derecho para rotar la cámara, crea un script similar que controle la rotación y asígnalo a otra variable como rightJoystick.

    Recuerda que para UI táctil necesitas un EventSystem en la escena, que Unity crea automáticamente al añadir un Canvas. Estos scripts usan el sistema de eventos de UI de Unity, que es la forma estándar y eficiente de manejar entrada táctil hoy en día.

Temas similares

  1. Problema cinta de pelo con reactor cloth problema
    Por Juan vasco en el foro Modelado
    Respuestas: 1
    : 28-12-2025, 10:40
  2. Problema con tipo mapeado y problema extraño
    Por DraDo en el foro Materiales y Texturizado
    Respuestas: 3
    : 14-04-2008, 21:24