ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Creando proyecto mobile.


Enviado por   •  12 de Marzo de 2016  •  Ensayo  •  999 Palabras (4 Páginas)  •  237 Visitas

Página 1 de 4

Creando el proyecto Mobile

Vamos a intentar modificar nuestro ejemplo de la esfera para poder usarlo en un dispositivo móvil. Para ello, en primer lugar, vamos a familiarizarnos con algunas de las posibilidades de los dispositivos móviles y cómo gestionarlas en Unity. Para ello vamos a crear un nuevo proyecto al que llamaremos Mobile.

  • Creamos un nuevo proyecto, al que llamaremos Mobile
  • Creamos dos carpetas en el proyecto: Scripts y Scenes
  • Guardamos nuestra escena Untitled como Mobile en el directorio Assets->Scenes
  • Creamos un nuevo script C# en la carpeta Scripts al que llamamos MobileInput

using UnityEngine;

using System.Collections;

public class MobileInput : MonoBehaviour {

        void OnGUI() {

                GUI.Label(new Rect(5, 5, 200, 20), "Accelerometer X: " + Input.acceleration.x);

                GUI.Label(new Rect(5, 25, 200, 20), "Accelerometer Y:" + Input.acceleration.y);

                GUI.Label(new Rect(5, 45, 200, 20), "Accelerometer Z:" + Input.acceleration.z);

        }

}

  • Asignamos este script al GameObject Camara de la escena
  • Ejecutamos asegurándonos que tenemos lanzado el Unity Remote en el dispositivo y observamos los cambios producidos al mover el dispositivo (o directamente lo ejecutamos sobre el dispositivo si lo queremos hacer directamente)

[pic 1]

  • Con el movimiento del dispositivo móvil, su acelerómetro reporta cambios de aceleración lineal a través de sus 3 ejes primarios en el espacio 3D.
  • Podemos usar esta información para detectar cuál es la orientación del dispositivo y cualquier cambio producido sobre esta
  • La aceleración a lo largo de un eje se devuelve en unidades G (1G = 9.81 m/s^2)
  • Un valor de 1.0 representa una carga de 1 gravedad en ese eje
  • A partir de la versión 4.0, los ejes de los acelerómetros están alineados con la vista de juego (Game View), con lo que hay que fijarse en la orientación que definimos en ‘Player Settings’ (landscape, portrait etc.) a la hora de saber cómo se orientan la X, Y, Z
  • Si hemos seleccionado ‘portrait’, sosteniendo el dispositivo en su posición vertical original (con la pantalla hacia el usuario), el eje X es positivo hacia la derecha, el eje Y es positivo directamente hacia arriba y el eje Z es positivo hacia el usuario

[pic 2]

  • Usando Input.acceleration podemos llevar a cabo la lectura de los 3 ejes
  • También podemos usar Input.deviceOrientation para que nos devuelva una valoración discreta de la orientación del dispositivo, en concreto una enumerado del tipo DeviceOrientation: FaceDown, FaceUp, LandscapeLeft, LandscapeRight, Portrait, PortraitUpsideDown, Unknown
  • Ampliando el proyecto Mobile
  • Retomemos el proyecto Mobile, y añadamos el siguiente código:
  • using UnityEngine;
  • using System.Collections;
  • public class MobileInput : MonoBehaviour {
  •         void OnGUI() {
  •                 GUI.Label(new Rect(5, 5, 200, 20),  "Accelerometer X: " + Input.acceleration.x);
  •                 GUI.Label(new Rect(5, 25, 200, 20), "Accelerometer Y: " + Input.acceleration.y);
  •                 GUI.Label(new Rect(5, 45, 200, 20), "Accelerometer Z: " + Input.acceleration.z);
  •                 GUI.Label(new Rect(5, 100, 200, 20), "Number of touches: " + Input.touchCount);
  •                 for (int i = 0; i < Input.touchCount; i++) {
  •                         PrintTouchData(Input.touches[i]);
  •                 }
  •         }
  •         void PrintTouchData(Touch t) {
  •                 GUI.Label (new Rect(t.position.x, Screen.height - t.position.y, 100, 20), t.position.ToString());
  •                 GUI.Label (new Rect(t.position.x, Screen.height - t.position.y + 20, 100, 20), "Finger: " + t.fingerId.ToString ());
  •                 GUI.Label (new Rect(t.position.x, Screen.height - t.position.y + 40, 100, 20), "Tap count: " + t.tapCount.ToString());
  •         }
  • }
  • Hemos completado el script del proyecto Mobile para que, además de la información de los acelerómetros, podamos visualizar cuál es el resultado de tocar la pantalla del dispositivo con uno o más dedos.
  • Cuando el jugador toca la pantalla Input.touchCount nos va a devolver el número de dedos (toques) que están sobre la pantalla. En el array Input.touches vamos a tener cada uno de esos toques del tipo Touch. Lo que hacemos es mostrar en un bucle la información de cada uno de los toques en pantalla.
  • La información que imprimimos de cada toque es su posición en coordenadas x,y de pantalla (t.position), el identificador de dedo (t.fingerId) y el número de 'taps' de ese dedo. Un 'tap' no es más que la acción de tocar y dejar de tocar la pantalla de forma rápida, de forma que Unity nos permite detectar si estamos haciendo un toque, un doble toque etc. con objeto de poder asociar diferentes acciones a estos toques.
  • [pic 3]
  • Otra propiedad de Touch muy interesante es la fase (.phase), que devuelve un enumerado del tipo TouchPhase, cuyos valores más interesantes son: Began (cuando tocamos por primera vez), Moved (cuando movemos el dedo), Stationary (permanecemos tocando pero no movemos el dedo) y Ended (hemos dejado de tocar la pantalla con ese dedo).
  • La fase pasará primero por Began, alternará entre Stationary y Moved, y finalizará en Ended

...

Descargar como (para miembros actualizados) txt (5 Kb)
Leer 3 páginas más »
Disponible sólo en Clubensayos.com