Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

[Aporte] Joystick Virtual para Unity 5.0 (uGUI)

Iniciado por pioj, Junio 12, 2015, 10:28:07 AM

Tema anterior - Siguiente tema
Junio 12, 2015, 10:28:07 AM Ultima modificación: Septiembre 18, 2016, 03:50:50 AM por pioj
Saludos a todos.
 
 
 
 
 
Tras muchas búsquedas sin éxito, por fin he encontrado un Joystick analógico virtual (en pantalla) para tablets y smartphones, pero que se base por fin en el uso de la nueva GUI que tiene Unity desde la 4.6.x.
 
 
 
He tenido la oportunidad de probarlo, y tras unas leves modificaciones ya funciona para versiones 5.0 en adelante. Lo he reducido de tamaño con sólo lo necesario y lo he vuelto a empaquetar.
 
 
 
 
 
El Package en cuestión lleva una scene de prueba que mueve una píldora por un escenario cerrado, para probar colisiones. El Joystick como tal se encuentra dentro de un panel, dentro del Canvas (como toca).
 
 
 
 
 
Enlace:
 
http://www.filedropper.com/uguijoystick
 
 
 
 
 
Espero que os sirva tanto como a mí, y que le deis mucho uso! 

Julio 04, 2015, 08:19:20 PM #1 Ultima modificación: Julio 04, 2015, 08:24:19 PM por kaito
Yo he creado otro algo más sencillo, utilizando también el nuevo sistema UI de Unity mediante una imagen de fondo y un botón al que he añadido dos eventos: Drag y PointerUp.
 
Podemos delimitar el radio de accion y el tiempo(smoothTime) que tarda en volver al centro después de soltar el botón.
 
Las variables estáticas Horizontal y Vertical muestran los valores en los ejes como hace Input.GetAxis.
 
Enlace de https://app.box.com/s/9d1f0yfrni8kpx5u1rjpxku2jyupi7o6" rel="external nofollow">descarga.

using UnityEngine;
using System.Collections;
public class JoystickControl : MonoBehaviour {
public static float Horizontal;
public static float Vertical;
public RectTransform rectTransform;
public float radio;
public float smoothTime = 0f;

Vector3 centro;
Vector3 velocidad;
bool centrar = false;

void Start(){
   
   this.centro = this.rectTransform.position;
   
}

void Update(){
   
   if(this.centrar){
      
      this.rectTransform.position = Vector3.SmoothDamp(this.rectTransform.position, this.centro, ref this.velocidad, this.smoothTime);
      if(Vector3.Distance(this.rectTransform.position, this.centro) < 0.1f){
         
         this.centrar = false;
         this.rectTransform.position = this.centro;
         
      }
   }
   
   Horizontal = (this.rectTransform.position.x - this.centro.x) / this.radio;
   Vertical =   (this.rectTransform.position.y - this.centro.y) / this.radio;
   
}

void Drag(){
   
   this.centrar = false;
   
   Vector3 posicion = Input.mousePosition;
   
   if(Vector2.Distance(this.centro, posicion) < this.radio){
      
      this.rectTransform.position = posicion;
      
   } else {
      
      this.rectTransform.position = this.centro + (posicion - this.centro).normalized * this.radio;
      
   }
   
}

void PointerUp(){
   
   this.centrar = true;
   this.velocidad = Vector3.zero;
   
}
}

Hola, los dos ficheros están borrados. ¿Seriáis tan amables de subirlos de nuevo?
 
Gracias,
 
Fernando.

Septiembre 17, 2016, 12:48:12 AM #3 Ultima modificación: Septiembre 18, 2016, 03:50:24 AM por pioj
Te lo he vuelto a subir. Aquí está el enlace:
 
http://www.filedropper.com/uguijoystick
 
 
 
 Actualmente hay en el Asset Store un montón de ejemplos compatibles. Por ejemplo: 
 
https://www.assetstore.unity3d.com/en/#!/content/15233


Etiquetas: