Workshop de introducción a la programación de juegos con Unity
(No se necesita programar, se pueden resolver desde el editor)
-
Hacer que el personaje no pueda salirse de los límites del escenario.
-
Personaliza el escenario! (Podes poner más obstáculos, más o menos calles y veredas, cambiar la velocidad de los autos, etc).
(Se resuelven con unas pocas líneas de código)
-
Hacer que los autos sean de distintos colores y/o modelos de forma random.
-
Al apretar la tecla Space se puede cambiar de cámara ortogonal y perspectiva.
(A programar!!!)
- El personaje puede recolectar frutitas que están tiradas por el escenario. Al recolectarlas suma puntos que se ven reflejados en el texto de la parte superior de la pantalla.
-
Poner paredes (Cubos) invisibles (o sea, con el componente
Mesh Renderer
apagado), que tengan el componenteBox Collider
con el check deIsTrigger
habilitado y el TagObstaculo
. -
En la carpeta
Assets/DecoracionesDeEscenario
hay varios objetos para usar. Arrastrarlos a la escena y acomodarlos como gustes. Tambien podes cambiar el setup del escenario agregando o sacando calles, pasto o agua. Para modificar la dificultad, los GameObjects llamadosCreadorDeVehiculos
tienen configurables los parámetros deVelocidad de vehiculo
eIntervalo de Aparicion
.
-
Para cambiar de modelos: En la carpeta
Assets/Transito
vas a encontrar prefabs de diferentes tipos de autos. Los GameObjects llamadosCreadorDeVehiculos
tienen una lista de posibles prefabs a instanciar. Agregarlos ahí. -
Para que los vehículos tengan color random: Crear un script que herede de
MonoBehaviour
y agregarlo como componente a los prefabsAuto
yCamioneta
. En el métodoStart
de ese script llamar a la función:this.CambiarColor(MeshRenderer, Color);
Donde:
-
MeshRenderer
puede ser una propiedad pública del componente, a la que vamos a arrastrar el componenteMeshRenderer
del objeto en cuestión. -
Color
va a ser un color generado de forma random utilizandoRandom.ColorHSV()
-
-
Agregar dos variables publicas de tipo
Camera
a la claseControladorDelJuego
, y desde el editor arrastrar las camaras para asignarles valor. En el métodoUpdate
de esta misma clase, chequear si se presionó la teclaBarraSpaceadora
utilizando la funciónthis.SePresionoLaTecla(CodigoDeTecla)
. Cuando esto suceda, prender una cámara y apagar la otra (de forma intercambiada) utilizando los métodosActivarCamara(Camera);
yDesactivarCamara(Camera);
-
En la carpeta
Assets/Frutas
hay varios los prefabs de frutitas, arrastrarlos en la escena y acomodarlos. Crear un script que herede deMonoBehaviour
y agregarlo como componente a todos los prefabs de frutas. Agregar en este script el métodoOnTriggerEnter(Collider other)
. Y en el mismo chequear si other contiene la etiquetaPlayer
(utilizando la funciónContieneLaEtiqueta
). En caso positivo, ocultar la frutita llamando athis.Ocultar()
y sumar puntos.Para sumar puntos, debemos hacerlo en algún lugar global del juego. Para eso podemos utilizar la clase
ControladorDelJuego
que el GameObjectGame
tiene como componente. Desde el script en el que estamos podemos acceder alControladorDelJuego
de la siguiente forma:ControladorDelJuego _controladorDelJuego = this.EncontrarObjetoDelTipo<ControladorDelJuego>();
Ahora podemos incluir una función en la clase
ControladorDelJuego
llamadaSumarPuntos(int)
que sume puntos y actualice el texto con el nuevo valor utilizando_textoPuntos.text = _puntos.ToString("#0000");
Método que se llama en todos los frames
Método que se llama cuando el objeto se crea en la escena
Método que se llama cuando el objeto empieza a colisionar con otro objeto que lo bloquea
Método que se llama cuando el objeto empieza a colisionar con otro objeto que no lo bloquea
Método que se llama cuando el objeto deja de colisionar con otro objeto que lo bloquea
Método que se llama cuando el objeto deja de colisionar con otro objeto que no lo bloquea
A partir de la llamada a este método el objeto empieza a escuchar eventos del teclado
A partir de la llamada a este método el objeto deja de escuchar eventos del teclado
Para llamar a un método que se va a ejecutar de forma asincrónica
Espera una cantidad de segundos antes de seguir ejecutando (solo se utiliza dentro de corutinas para no bloquear el thread principal)
Mueve a objeto a la posición recibida por parámetro
Rota al objeto para que "mire" hacia la dirección recibida por parámetro. La dirección puede ser left (izquierda), right (derecha), forward (hacia adelante) o back (hacia atrás)
Devuelve true si la tecla si la tecla se presiono en el frame actual y false en caso contrario. codigoDeTecla puede ser: FlechaDerecha, FlechaIzquierda, FlechaArriba, FlechaAbajo o BarraEspaceadora
Devuelve el Vector resultante de la interpolación de dos vectores
Devuelve un Vector3 que indica la posición actual del objeto
Devuelve un Vector3 que indica la posición actual del objeto pasado por parámetro
Carga la nueva escena eliminando la anterior
Carga la nueva escena sobre la actual, sin eliminarla
Encuentra el componente de tipo Animator en el objeto
Oculta y deshabilita al objeto
Busca en la escena un GameObject que tenga un componente de tipo T
Le cambia el tint color a la maya3D recibida por parametro.
Destruye el objeto y lo remueve de la escena
Activa la cámara
Desactiva la cámara
Devuelve true si el Tag del collider es “etiqueta”