Introducción a Unity

Transcripción

Introducción a Unity
VIDEOJUEGOS 2
Introducción a Unity
Introducción a Unity
V2
Puntos a tratar
•
•
•
•
•
•
•
Entorno Unity
Assets
Escena
Objetos y componentes
Unity Script
Eventos de entrada
Adaptación a dispositivos móviles
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!2
V2
Introducción a Unity
Motor Unity
• Motor genérico para la creación de videojuegos
• Enfocado hacia el desarrollo casual
• Permite un desarrollo rápido de videojuegos
http://unity3d.com
• Se puede crear un videojuego sin escribir código
• Cuenta con su propia herramienta de edición integrada
• Dos tipos de licencia: Free (limitada) y Pro ($1.500)
• Soporta gran cantidad de plataformas
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!3
V2
Introducción a Unity
El editor
Escena / Juego
Inspector
Árbol de la escena
Assets
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!4
V2
Introducción a Unity
Assets
• Dentro del proyecto tenemos una serie de assets (recursos)
• Algunos tipos de assets utilizados son
• Escenas del juego: Es el tipo principal de asset. Cada nivel del
juego se guarda en un asset de tipo escena.
• Mayas: Geometría 3D que podemos añadir a la escena. Podemos
importar modelos con animaciones (FBX, OBJ, 3DS, etc).
• Materiales: Definen el aspecto que le podemos dar a una maya
(textura, color, sombreado, etc).
• Scripts: Permiten personalizar el comportamiento de los objetos del
juego mediante programación.
• Clips de audio: Músicas y efectos de sonido.
• Podemos importar paquetes de assets predefinidos
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!5
V2
Introducción a Unity
Escena
• Cada nivel del juego se almacena en un asset de tipo escena
• La escena contiene un árbol de objetos (Game Objects)
• Unity sigue una arquitectura basada en componentes
•
•
•
•
•
•
Dentro de la escena tenemos únicamente Game Objects
Los objetos no se definen por su tipo (todos son Game Objects)
Lo que define a los objetos son los componentes que contienen
Podemos añadir varios componentes a cada Game Object
Los componentes definen la forma de actuar del objeto
Ejemplos:
Una cámara es un Game Object con un componente Camera
Un Game Object con un componente Light ser comportará como una fuente de luz
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!6
V2
Introducción a Unity
Añadir objetos
• Podemos crear distintos tipos de Game
Objects predefinidos en el menú GameObject
• Llevan ya una serie de componentes
!
• Si creamos un Empty Game Object sólo
tendremos un componente Transform
• Útil para agrupar objetos
!
• Podemos agrupar objetos bajo un mismo
nodo arrastrando y soltando
!
• Podemos renombrar Game Objects en la
vista Hierarchy (click sobre el nombre)
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!7
V2
Introducción a Unity
Formas básicas
• Podemos crear nodos con formas
geométricas básicas
•
•
•
•
Planos
Cubos
Esferas
Cilindros
!
• Estos objetos incorporan una serie de
componentes
•
•
•
•
Transform (posición y orientación)
Renderer (material)
Mesh (maya geométrica)
Collider (geometría de colisión)
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!8
V2
Introducción a Unity
HUD
• Podemos añadir capas 2D a la pantalla
• Para ello contamos con los componentes
• GUITexture
• GUIText
!
• En estos casos la posición del objeto en el
que se encuentran se da en coordenadas
2D relativas de pantalla
• (x,y) entre (0,0) y (1,1)
• (0,0) representa la esquina superior izquierda
• (1,1) representa la esquina inferior derecha
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!9
V2
Introducción a Unity
Cámara
• Objeto con componente Camera
• Permite configurar los parámetros de la
cámara
• Podemos definir varias cámaras en la escena
• Podemos añadir un componente Camera a
nuestro personaje (FPS)
• Al seleccionar una cámara vemos el preview
• Componentes comunes en la cámara
GUI Layer
La interfaz se dibuja sobre la vista de la
cámara
Flare Layer
Se muestra un destello sobre la imagen
Audio Listener Escucha las fuentes de audio de la
escena y reproduce el sonido a través
de los altavoces, sólo debe haber uno
en la escena
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!10
V2
Introducción a Unity
Audio
• Para reproducir audio necesitaremos un
Game Object con un componente Audio
Source
• Podemos añadirlo a la cámara para oirlo
siempre igual
• Podemos añadirlo a objetos del
escenario para que el volumen cambie
según la distancia
!
• Añadiremos el clip de audio a reproducir
como asset del proyecto
• Especificaremos dicho asset en el
componente Audio Source
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Las fuentes de audio serán
“escuchadas” desde el Audio
Listener de la escena. Esto
será lo que oiremos a través
de los altavoces
Introducción a Unity
!11
V2
Introducción a Unity
Luces
• Objeto con componente Light
• Encontramos distintos tipos de luces
predefinidas
!
!
!
!
!
• Podemos configurar diferentes parámetros
• Color
• Intensidad
• Distancia
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!12
V2
Introducción a Unity
Opciones globales de render
• En el menú Edit > Render Settings
• Permite configurar por ejemplo la luz ambiente de la escena
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!13
V2
Introducción a Unity
Navegar por la escena
• Podemos utilizar diferentes combinaciones de teclado para
navegar por la escena 3D en el editor
•
•
•
•
Seleccionamos el icono
Desplazamiento lateral: Click y arrastrar
Zoom: Ctrl + Click y arrastrar / Rueda del ratón
Rotación: Alt + Click y arrastrar. Podemos usar el gizmo
!
• Iconos
• Seleccionar un objeto: Click sobre el objeto
Podemos ver sus propiedades en el inspector
• Mover, rotar o escalar el objeto: Click sobre el objeto y arrastrar
Podemos aplicar la transformación sólo sobre un eje
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!14
V2
Introducción a Unity
Prefabs
• Los prefabs son un tipo de asset
• Definen un prototipo de game object
• Podemos crear varios game objects de dicho tipo
arrastrando el prefab sobre la escena
!
• Crearemos un prefab con Assets > Create > Prefab
• Arrastramos un game object existente sobre el prefab
para utilizarlo como prototipo
• Todos los objetos de la escena creados a partir del
prefab aparecen en azul
• Indica que están vinculados a él
• Si cambiamos el prefab, todos cambian
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!15
V2
Introducción a Unity
Scripts
• Los scripts son un tipo de assets
• Permiten personalizar el comportamiento de los objetos mediante
programación
!
• Se añaden como componente a los objetos
• Cuando un Game Object tiene un componente script, este código
se ejecuta sobre el objeto
!
• Se pueden utilizar diferentes lenguajes
• UnityScript (basado en Javascript)
• C#
• Boo
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!16
V2
Introducción a Unity
Paquetes de assets
• Podemos importar paquetes de assets
• Unity incorpora una serie de assets predefinidos
• Menú Assets > Import Package
!
• Algunos ejemplos:
Scripts
Smooth Camera
Character Controllers
Seguimiento de cámara en tercera persona
Scripts para manejo de personajes
Render
Vegetación
Videojuegos II
Agua
© 2013-2014 Depto. Ciencia de la Computación e IA
Skyboxes
Introducción a Unity
!17
V2
Introducción a Unity
Controlador de personajes predefinido
• Importamos assets del paquete
Character Controller
• Añadimos sobre un nodo el
componente Third Person Controller
• Es configurable desde el inspector
• Podremos manejar el personaje con
• W,A,S,D: Moverse
• Espacio: Saltar
• Shift: Correr
• Existen otros tipos de controladores
• FPS Input Controller
• Platform Input Controller
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!18
V2
Introducción a Unity
Creación de scripts
• Se crean como assets de tipo script
!
• Podemos editarlos con la herramienta integrada MonoDevelop
!
!
!
!
!
!
!
• La herramienta a utilizar se puede configurar en Preferences … >
External Tools
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!19
V2
Introducción a Unity
Añadir un script a un objeto
• Una vez creado un script, podemos añadirlo como componente a
un Game Object
!
!
!
!
!
!
!
• Tras esto, lo veremos en la lista de componentes del Game Object
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!20
V2
Introducción a Unity
Estructura de un script
• La estructura básica de un script UnityScript es
!
#pragma strict
!
!
function Start () {
!
!
}
!
!
function Update () {
!
!
}
!
• Start() nos permite inicializar el nodo
• Awake() se ejecuta justo antes (útil para dependencias)
• Update() actualiza el nodo (su frecuencia depende del framerate)
• LateUpdate() se ejecuta justo después (para dependencias)
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!21
V2
Introducción a Unity
Acceso a las propiedades el objeto
• Desde el código del script se accede a propiedades del Game
Object al que pertenece
• Encontramos estas propiedades como variables implícitas
• Si el objeto no dispone del componente correspondiente, la variable
tendrá valor null
transform
renderer
audio
camera
light
Transformación del nodo en la escena
Permite cambiar el material del objeto
Acceso al componente Audio Source
Permite configurar la cámara
Permite configurar una fuente de luz
function Start () {
transform.position = Vector3(0,0,5);
}
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Inicializa el nodo
en una posición
Introducción a Unity
!22
V2
Introducción a Unity
Interfaz del script
• Podemos definir variables globales en el script
!
#pragma strict
!
!
var posicionInicial : Vector3;
!
!
function Start () {
transform.position = posicionInicial;
}
!
!
!
• Estas variables aparecen como parámetros en el entorno
• Hacen el script reutilizable
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!23
V2
Introducción a Unity
Polimorfismo en Unity
• Si creamos una variable cuyo tipo corresponde a un componente,
podremos asignar a ella cualquier Game Object que incorpore
dicho componente
!
• Por ejemplo, creamos una variable pública target de tipo Transform
!
var target : Transform;
!
• Podremos asignar a ella cualquier Game Object con un componente
Transform
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!24
V2
Introducción a Unity
Acceso a los componentes
• Podemos acceder a otros componentes que no se encuentran
entre los objetos implícitos del script
• Utilizamos GetComponent(TipoComponente)
!
var t : Transform;
t = GetComponent(Transform);
var s : OtroScript;
s = GetComponent(OtroScript);
Equivalente a utilizar la variable
implícita transform
Nuestros scripts son
considerados componentes
!
!
• Atributos @script • Permiten definir cómo se utilizará el script en el entorno
@script RequireComponent(OtroScript)
Obliga a añadir OtroScript al objeto
@script AddComponentMenu("Controlador/Cube Script")
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!25
V2
Introducción a Unity
Buscar objetos
• Los objetos tienen nombre y etiqueta
• Propiedades name y tag
!
• Podemos realizar búsquedas de objetos
• Búsqueda por nombre
!
var techo : GameObject = Find("Techo");
!
• Búsqueda por etiqueta
var enemigo : GameObject = FindWithTag("enemigo");
var enemigos = FindGameObjectsWithTag("enemigo");
for(var enemigo : GameObject in enemigos) {
...
}
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!26
V2
Introducción a Unity
Creación y destrucción de objetos
• Podemos instanciar un nuevo objeto
• Se instancia mediante la clonación del objeto proporcionado
• Útil para la creación de proyectiles
!
!
var clone : Proyectil;
clone = Instantiate(proyectil);
• Destrucción de objetos
• El objeto se destruye y se elimina de la escena
!
!
Destroy(enemigo);
Destroy(this);
!
• Puede aplicarte a cualquier tipo de objetos (Game Objects,
componentes, etc)
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!27
V2
Introducción a Unity
Eventos de entrada (I)
• El objeto Input nos permite acceder a la
entrada
• Está preparado para entrada en dispositivos
móviles
• En Input Manager definimos controles virtuales
• Se accede mediante Edit > Project Settings >
Input
• Cada control tiene una tecla por defecto
• El usuario podrá configurarlo
if(Input.GetButton("Fire1")) {
// ¡Disparar!
}
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!28
V2
Introducción a Unity
Eventos de entrada (II)
• Podemos leer un eje y actualizar la posición del personaje
!
!
!
function Update () {
var delta : float = Input.GetAxis("Horizontal") * Time.deltaTime;
transform.Translate(Vector3(0,delta,0));
}
• Posición del ratón
!
Input.mousePosition
• Botones del ratón
!
Input.GetMouseButton(0 | 1 | 2)
• Teclado
Input.GetKey(KeyCode.LeftArrow)
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!29
V2
Introducción a Unity
Interfaz de usuario
• La GUI se crea de forma programada en el método OnGUI()
• El objeto sobre el que se aplica debe incorporar GUILayer
• Suele ser la cámara
!
• En dicho método al mismo tiempo se crean los objetos de la
interfaz y se programa su respuesta
function OnGUI() {
if(GUI.Button(Rect(10,10,150,50), "Start")) {
Debug.Log("Se ha pulsado el boton");
}
}
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!30
V2
Introducción a Unity
Dispositivos móviles
• Unity permite desplegar el juego en
plataformas móviles
!
• Deberemos adaptar la interfaz a estos
dispositivos
!
• Detectamos el tipo de dispositivo utilizado
if (Application.platform == RuntimePlatform.Android ||
Application.platform == RuntimePlatform.IPhonePlayer ||
Application.platform == RuntimePlatform.BB10Player ||
Application.platform == RuntimePlatform.WP8Player) {
// Activar controles táctiles
}
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!31
V2
Introducción a Unity
Entrada de usuario en móviles
• Podemos añadir entrada de la pantalla táctil y acelerómetro
!
!
!
Aceleración en (x,y,z)
Input.acceleration
Lista de contactos en la pantalla
Input.touches
!
!
• Podemos recorrer la lista de contactos
• Comprobar su estado
• Leer sus coordenadas
for (var touch : Touch in Input.touches) {
if (touch.phase != TouchPhase.Began) {
var pos : Vector2 = touch.position;
}
}
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!32
V2
Introducción a Unity
Controles en pantalla
• Importamos el paquete Standard Assets (Mobile)
• Añadimos el prefab Dual Joysticks a la escena
• Se trata de objetos GUITexture vinculados a un script (tipo Joystick)
• Definiremos una variable de entrada Joystick en el script de
nuestro personaje
!
var moveJoystick : Joystick;
• Vinculamos uno de los joysticks con dicha variable
!
!
• Leemos la entrada de él al actualizar la escena
function Update () {
var delta : float = moveJoystick.position.y * Time.deltaTime;
transform.Translate(Vector3(0,delta,0));
}
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!33
V2
Introducción a Unity
Desplegar en móvil
• Abrimos la pantalla Build Settings
• File > Build Settings
!
• Seleccionamos la plataforma y
pulsamos Switch Platform
!
• Añadimos las escenas que
queramos desplegar en el cuadro
superior
!
• Pulsamos Build para generar el
proyecto
Videojuegos II
Necesitaremos abrir el proyecto
en el entorno correspondiente
(Xcode, Eclipse, …)
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!34
V2
Introducción a Unity
Unity Remote
• La aplicación Unity Remote nos permite
probar en móviles vía streaming de forma
cómoda
• Podemos descargarla de forma gratuita en
cualquier plataforma
• El móvil deberá estar en la misma red que el
ordenador con Unity
!
• Cargamos la aplicación Unity Remote en el
móvil
• Detectará los ordenadores con Unity activo
• Seleccionamos el ordenador al que conectar
• En ese ordenador pulsamos Play para
reproducir el juego en el móvil
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!35
V2
Introducción a Unity
¿Preguntas...?
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Introducción a Unity
!36

Documentos relacionados