Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: pioj en Junio 12, 2015, 10:28:07 AM

Título: [Aporte] Joystick Virtual para Unity 5.0 (uGUI)
Publicado por: pioj en Junio 12, 2015, 10:28:07 AM
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 (http://www.filedropper.com/uguijoystick)
 
 
 
 
 
Espero que os sirva tanto como a mí, y que le deis mucho uso!  (//Smileys/invision/default_cool.png)
Título: [Aporte] Joystick Virtual para Unity 5.0 (uGUI)
Publicado por: kaito en Julio 04, 2015, 08:19:20 PM
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 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;
   
}
}
Título: [Aporte] Joystick Virtual para Unity 5.0 (uGUI)
Publicado por: FNP en Septiembre 16, 2016, 03:54:56 PM
Hola, los dos ficheros están borrados. ¿Seriáis tan amables de subirlos de nuevo?
 
Gracias,
 
Fernando.
Título: [Aporte] Joystick Virtual para Unity 5.0 (uGUI)
Publicado por: pioj en Septiembre 17, 2016, 12:48:12 AM
Te lo he vuelto a subir. Aquí está el enlace:
 
http://www.filedropper.com/uguijoystick (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 (https://www.assetstore.unity3d.com/en/#!/content/15233)
Título: [Aporte] Joystick Virtual para Unity 5.0 (uGUI)
Publicado por: pioj en Septiembre 18, 2016, 03:52:07 AM
Arreglado!