El post que buscas se encuentra eliminado, pero este también te puede interesar

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Bienvenido a mi nuevo Post
Sigueme para no perderte ninguno de mis aportes
Cualquier duda deja un comentario o un MP
Si te gustan mis aportes compartelos
Comentar y dejar puntos es agradecer
Este post puede ser pesado dejalo cargar

Programacion

Videojuegos




indie

Bueno en esta intro, mas que nada me voy a dirigir a quienes no hayan visto la primer parte de este Post-Tutorial. Quiero que sepan que esta es una serie de Post-Tutoriales. Tutoriales hechos a través de varios post, donde voy a enseñar a hacer un videojuego. Debido a la complejidad de hacer videojuegos, no podía poner todo en un solo post, así que decidí dividir en niveles(Básico, Intermedio, Avanzado, y Extras), y cada nivel cortarlo en partes para no hacer post demasiado largos.
Esta es la segunda y ultima parte del Nivel: Básico.
Pueden encontrar la primer parte aquí:

blender

Y pueden ver un resumen del proceso que lleva hacer un videojuego aquí:

gamer


tutorial

En esta parte terminamos lo que es el nivel básico teniendo un "juego" base. Vamos a tener algo completamente jugable, aunque sin mucha gracia por la falta de gráficos, menús, etc. Pero para quienes no hayan tocado Unity3D nunca, es un avance enorme.

Este juego lo usaremos de base, para ir mejorandolo en el nivel intermedio. La primer parte del nivel intermedio la tendré pronta dentro de una semana mas o menos.

Nada mas que decir, espero que les guste

unity3d




Haz Tu Primer Videojuego [Nivel: Básico (P.2)]
Programacion




Videojuegos

  • 1.- Introduciendo el personaje y la cámara.
  • 2.- Creando una bala capaz de destruir y destruirse.
  • 3.- Comenzar a crear "Prefabs".
  • 4.- Creando un cañón y hacerlo disparar la bala.
  • 5.- Hacer que el cañón le apunte al personaje.
  • 6.- Probando la escena con mas cañones.


Tip:
Puedes usar "ctrl" + "f" en el navegador para abrir el buscador. Escribir una opción del indice, y ser llevado ahí.


indie




1.- Introduciendo el personaje y la cámara.
blender

Bueno ahora vamos a dejar la programación de lado un momento. Para que la "bala" que acabamos de crear, no se nos borre por accidente vamos a convertirla en un prefab.

Abran la carpeta Prefabs que crearon en la pestaña projects. Ahora seleccionen la bala en la pestaña hierarchy y arrástrenla hasta dentro de la carpeta Prefabs.

Como verán en la carpeta Prefabs se les creo un cubo celeste llamado bala, y en el hierarchy el nombre de bala se volvió azul:

gamer

Esto que acabaron de hacer, es muy importante. Al crear un Prefab de bala, ahora tienen el objeto tal cual esta en la escena, guardado en su carpeta hierarchy.

Esto es útil por montones de cosas. No siempre van a crear prefabs de todo lo que hagan, pero puede ser útil, la mayoría las van a ir aprendiendo con la practica, les dejo unos ejemplos:

Si van a instanciar, o hacer aparecer un objeto de la nada(Como una bala)
Para tener el objeto guardado por si precisan usarlo en un futuro
Por si se les borra el objeto en la escena, o le modifican algo que después se arrepienten. El prefab va a seguir viéndose como cuando lo crearon.

tutorial

Ahora que ya tienen el prefab de bala creado, pueden borrar el objeto bala en el hierarchy.
Tranquilos, cuando la quieran recuperar la bala que crearon, basta con arrastrar el prefab a las pestañas scene o hierarchy. Para que siga estando tal cual la dejaron.

De momento bórrenla para poder trabajar con menos cosas a la vista. La seleccionan en el hierarchy y presionan "Supr."

unity3d

Lo siguiente que vamos a hacer es arrastrar el jugador que vamos a usar. Crear un script de movimiento y de animaciones, es algo bastante complejo, así que de momento vamos a usar el que trae Unity por defecto, que es muy bueno. Mas adelante en el tutorial, si veo que se presta, les guió para crear el suyo propio.

En la pestaña project vayan a:

Assets > Standar Assets > Characters > ThirdPersonCharacter > Prefabs

Ahí van a ver dos prefabs, arrastren el que se llama "ThirdPersonController" a la pestaña hierarchy, y denle doble click(en la pestaña hierarchy) para que la escena se mueva hacia donde esta el personaje:

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Este personaje se llama "Ethan" y es algo así como la mascota de Unity xD Siempre lo usan en sus proyectos de ejemplo y demás.

Con el personaje seleccionado, vamos a la pestaña inspector y modificamos la position(En transform) a 0, 0, 0. Para moverlo al centro de la escena.

Programacion

Ahora nuevamente en el hierarchy hacemos doble click en la cámara(Main Camera), y el la escena se moverá hasta donde esta la cámara, que como podemos ver no esta lejos del personaje

Videojuegos

Quiero que muevan la cámara hasta encima del hombro del personaje un poco alejada. Recuerden que para moverla deben tener el modo mover que son las flechas(Se elige este modo presionando la W). Y después giren la cámara un poco hacia al suelo con el modo girar(La tecla E)

Si aun les cuesta un poco manejarse en el entorno 3D, pueden mover la cámara y rotarla solo con el inspector. Con la cámara seleccionada vayan al inspector y cambien los valores position a 0.5, 1.5, -2. Y la rotation cámbienla a 12, 0, 0.

En la siguiente captura pueden ver los valores cambiados en el inspector y como se va a ver la escena a través de esa cámara en la pestaña game:

indie

Ahora en la pestaña hierarchy arrastren la cámara, hasta arriba del ThirdPersonController que también esta en el hierarchy.
Cuando lo hagan, el ThirdPersonController se desplegara mostrando todo lo que esta "dentro" de el, incluida ahora la cámara.

Cuando un objeto esta dentro de otro se le llama child.

Por ejemplo el objeto A, esta dentro del objeto B. Entonces A es child de B. Y B es el parent de A.

Todo child se mueve junto a su parent. Así que si B se mueve hacia la derecha, A también lo hará. Como esto se aplican otros cambios, pero lo van a ir entendiendo con la practica.


Ahora que la cámara es child del personaje. Cuando el personaje se mueva, la cámara lo va a seguir. Este método es bastante rudimentario, y lo vamos a usar solo temporalmente

blender

Antes de seguir, como verán el ThirdPersonController quedo desplegado en el hierarchy. Ocupando mas espacio y mostrando lo que tienen dentro. Presionen la flechita que esta junto a su nombre, para replegarlo.

gamer

tutorial

Ahora presionen el botón de play que esta justo arriba de la escena. Y verán como Ethan entra en estado Idle(espera) que es la animación que reproduce cuando no hace nada.
Todos los juegos cuando no estamos haciendo nada, el personaje hace algún leve movimiento. Cuando estén trabajando con animaciones, a ese estado se le llama idle.

Ahora si presionan la W Ethan caminara hacia adelante, con las AD girara, salta con SPACE. Y todo tiene su correspondiente animación.

La cámara lo sigue y podemos ver como se vera el videojuego en la pestaña game. Mientras que en la pestaña scene podemos ver.

Si antes de presionar el boton play, marcamos la opción Maximize on Play de la pestaña game. Al darle play, la pantalla del juego se pondrá maximizada, y podrán apreciar mejor los detalles:

unity3d

Acá ustedes pueden pensar "Wow solo arrastre una cosa y tengo un personaje que se mueve y salta y y y tiene animaciones, soy el puto amo"...
mmm bueno la realidad es que eso fue fácil porque es un prefab que ya trae todo armado. Pero cuando estén desarrollando sus propios videojuegos, muchos prefabs como este, no se adaptaran a sus necesidades, y tendrán que hacer los suyos propios. Y eso no es nada fácil.

No les digo esto para desanimarlos ni nada, sino para mantener las expectativas controladas. Y que entiendan que solo usar prefabs, no es hacer un videojuego.

En este tutorial vamos a usar este prefab SOLO en la etapa de nivel Básico. Mas adelante vamos a hacer uno propio

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Bueno dejando todo eso de lado, es bastante lindo ver como ya tienen un personaje tan bien logrado hecho.
Como ven el tema de la cámara es muy rustico, y si presionan la S para caminar hacia atrás se buggea. Pero tranquilos es solo temporal.

Programacion

Para terminar este apartado vamos a hacer dos cosas. Primero seleccionen el ThirdPersonController en el hierarchy. Vayan a la pestaña inspector y cámbienle el nombre a "Jugador", y en la opción Tag(que ya habíamos usado con el piso) seleccionamos el tag "Player"

Videojuegos

Y por ultimo abran la carpeta prefabs, donde tienen el prefab "bala". Y arrastren a Jugador desde la pestaña hierarchy, hasta un espacio vació en la carpeta prefabs.

Ahora ya tienen un prefab de una bala, y del jugador.

indie

Tip:
A estas alturas, seguramente quieran experimentar un montón de cosas por su cuenta, y eso esta mas que bien! Pero para evitar dañar la continuidad del tutorial, les recomiendo seguir el tuto al pie de la letra. Al terminar guardan la escena, y guardan el proyecto. Cierran Unity, abren un proyecto nuevo y ahí hacen las pruebas. O incluso pueden duplicar la carpeta del proyecto del tutorial. Pero siempre traten de no experimentar en el mismo proyecto del tuto, porque si algo sale mal en los tuto siguientes, no van a saber porque


blender




2.- Creando una bala capaz de destruir y destruirse.
gamer

Ahora vamos a hacer algo de interacción bala/jugador.

Primero que nada arrastren el prefab "bala" desde la carpeta prefabs, hasta el hierarchy.
Seguro va a estar en el mismo lugar que el jugador porque ambos estaban en la posición 0.

Muévanla un poco hacia atrás con las flechas que aparecen en la pestaña scene (si no hay flechas presionen W) y un poco hacia arriba para que no este a mitad del piso.

tutorial

Con la bala seleccionada, en la pestaña inspector vayan al script llamado bala y háganle doble click justo donde marco en la imagen:

unity3d

Esto nos va a abrir el script justo como lo habíamos dejado:

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Se acuerdan que les dije, que

void Update

Es un método. Uno que se activa en cada frame del juego.
Bueno ahora vamos a trabajar con otro método llamado OnTriggerEnter. Este se activa cuando el objeto que lo lleva, atraviesa algo.

Debajo del Update, dejando una linea de espacio. Escriban lo siguiente(Ya no voy a poner el código escrito porque me pidieron mas screenshoots. Ademas las imágenes no pueden copiar y pegar el texto, así que si o si van a tener que escribirlos y eso es bueno)

Programacion

Este método se va a disparar cuando atraviese algo. Pero como pueden ver, a diferencia de update tiene dos cosas entre las paréntesis. "Collider" es el objeto con el que colisiona, y other es solo el nombre que le damos a ese objeto con el que colisiono.

Por ejemplo, si la bala(que es la que lleva este script), choca con el jugador. Entonces Jugador, pasa a ser el collider. Pero para referirnos a el vamos a usar otro nombre que yo puse "other".

Así si por ejemplo yo quiero saber el Tag del objeto con el que choco mi bala. Solo consulto el tag de "other".

Y eso es lo que vamos a hacer ahora. Agreguen lo siguiente dentro del método OnTriggerEnter:

Videojuegos

"if ()" en ingles quiere decir "si...". Es un condicional. Es lo que vamos a usar de ahora en mas, cuando queramos que algo suceda solo SI cierta condición se cumple. La condición que necesitamos que se cumpla, la vamos a especificar dentro de las paréntesis que le siguen.
Y luego entre los braces ( "{" ) decimos que queremos que suceda, si esa condición se cumple.

En este caso dice algo así:
Recordemos que other es el nombre que le damos al objeto contra el que chocamos
"Si la etiqueta de "other" es igual a "Player""
Por lo tanto, si chocamos contra un objeto que tiene un tag "Player". Esta condición estará cumplida.
Por lo tanto va a suceder lo que esta entre los braces, osea que se destruya el "gameObject" de other. El gameobject es el objeto, destruirlo es destruir el objeto.

Por lo tanto, con este script. Al chocar la bala con cualquier cosa que tenga el tag "Player", lo va a destruir.

Vamos a probarlo!

Guarden los cambios en el script con ctrl + S y vayan a Unity. Esperen a que compile los cambios que hicieron.

Seleccionen la bala en el hierarchy y cámbienle la velocidad a una mas lenta como 2. También en Sphere Collider marquen la casilla Is Trigger

indie

Tip:
Una breve y rápida explicación. Un collider, es una forma invisible que determina si un objeto es "solido" o no. Eso permite por ejemplo, que el collider que tiene nuestro personaje, no atraviese el piso que también tiene un collider. Al ser ambos objetos sólidos no se atraviesan.

Cuando marcan la casilla Is Trigger de un collider. Le están diciendo que puede atravesar los demás objetos. Esto es necesario, ya que el método OnTriggerEnter, se activa cuando un objeto atraviesa otro


También desmarquen la opción Maximize on Play de la pestaña Game. Para que puedan ver como sucede en la escena.

Ahora si, denle play. Y en teoría esto es lo que pasa:
  • La bala avanza hacia adelante, por el script de moverse hacia adelante.
  • Como la habíamos colocado un poco detrás del jugador, termina chocando con el.
  • Se activa el Trigger y como el Jugador tiene el Tag "Player, lo destruye.
  • La bala sigue avanzando como si todo le chupara un huevo.
  • La pestaña game queda gris, ya que al destruirse el Jugador, se destruyo la cámara que estaba dentro de el. Y sin cámara no hay nada que ver.

blender

Si todo salio así, vas bien. Si no, vuelve a leer todo y fíjate donde pudiste haberle errado.

Muy bien, ahora nuestra bala "mata" a nuestro jugador. Y también deben haber entendido un poco el para que sirven los tag.
Agreguemos algo mas para que se destruya la bala si choca con cualquier otra cosa. Vayan de nuevo al código, y dentro de OnTriggerEnter agreguen lo siguiente:

gamer

"else" se usa con "if". Dijimos que "if es un condicional. Si la condición se cumple, la acción dentro de "if" sucede. Si no se cumple, sucede la acción dentro de "else".

No es obligatorio que haya un "else". Si la condición de "if" no se cumple, y no hay un "else". Simplemente no pasa nada. Pero en este caso nosotros queremos que si pase algo.

Hice un esquema super sencillo para dejar mas claro esto antes de seguir:

tutorial

Al chocar con un objeto, revisara su tag. Si coincide con Player destruye el objeto. Sino se destruye a si mismo.

Vamos a probarlo!

Guarden el código con ctrl + S, y vayan a Unity. En el hierarchy creen un nuevo cubo:

unity3d

Con el cubo seleccionado, vayan al inspector y pónganlo en la posición 0, 0, 0.
Tiene que quedar justo debajo del jugador.

Con la herramienta de mover (tecla W). Levanten el cubo un poco, y luego muévanlo un poco hacia atrás. Justo entre el jugador y la bala.

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Ahora seleccionen la bala en el hierarchy, y vayan a la pestaña inspector. Debajo de todos los componentes, verán una opción "Add component". Háganle click, y en la ventana que aparece verán que hay un cuadro de búsqueda. Ahí escriban "rigidbody"

Programacion


Les van a aparecer los componentes con el nombre que buscan. Seleccionen el que se llama Rigidbody. Veran que se añadio un nuevo componente a bala.

En ese componente desmarquen la opción "Use Gravity"

Videojuegos

indie

Explicación rápida: Un rigidbody es un componente que le da al objeto propiedades de fisica, como masa, gravedad, etc. Nuestro Jugador tiene uno, pero como no lo hicimos nosotros no lo habíamos tocado aun. El rigidbody de nuestro personaje tiene gravedad, por eso cuando salta vuelve a caer al piso, etc.

Para la bala no necesitamos la gravedad, por eso la desactivamos. Solo necesitamos que la bala tenga rigidbody, porque para activar el método OnTriggerEnter, mínimo uno de los dos objectos que colisiona. Tiene que tener un rigidbody.

Sin el rigidbody, al chocar la bala con el cubo no pasaría nada.

blender

Ahora si, denle play. Y verán como la bala al chocar con el cubo, desaparece y nunca alcanza a nuestro jugador. Osea que podemos escondernos detrás de objetos.

gamer

Recuerden ir guardando cada tanto!

Tip:
Cuando hagan scripts o materiales, traten de ponerle algo que los diferencie un poco para no confundirse. Por ejemplo al llamarse "Bala" el objeto y "Bala" el script puede ser un poco confuso. Yo debí decirles que el script se llamase por ejemplo "Bala_Script" pero me di cuenta tarde, así que sigamos así. Pero tengan en cuenta eso


tutorial




3.- Comenzar a crear "Prefabs".
unity3d

Bueno ahora vamos a crear prefab. Si ya se que hasta ahora crearon 2, pero ahora vamos a hacer uno con mas forma

Primero que nada, elijan la bala en el hierarchy y en el inspector verán que justo debajo del nombre tiene una opciones que antes no tenia. Es que ahora al ser un prefab si le hacemos cualquier cambio, y luego presionamos revert volverá a estar como estaba en el prefab. SI presionamos select, nos seleccionara a su prefab en la pestaña Project, y si presionamos Apply cualquier cambio que le hayamos hecho, le sera aplicado al prefab que tenemos guardado. Como queremos que el rigidbody que le pusimos, se quede ahí, le vamos a dar apply.

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

A jugador, también le damos apply y luego borramos ambos.

Ahora seleccionen el cubo, y estirenlo un poco hacia arriba, y un poco hacia un lado(La herramienta para estirar es la R, les aparecerán las lineas con los cubos al final)

Programacion

Después de estirarlo, cámbienle el nombre en el inspector y pónganle Obstáculo. Y también el tag del mismo nombre que habíamos creado.

También pónganle el material obstáculo que habíamos creado. Abran la carpeta Materials y arrastren el material "Obstaculo" al objeto en el hierarchy.

Abran la carpeta prefabs y arrastren el objeto "Obstaculo" desde el hierarchy hasta la carpeta para crear un prefab.

Videojuegos

Ahora ya pueden borrar el obstáculo del hierarchy para tener la escena vacía y trabajar mas limpio.

indie




4.- Creando un cañón y hacerlo disparar la bala.
blender

Ahora empezamos con el Prefab desde cero que vamos a hacer!

Creen un nuevo cubo, y en el inspector en position ponganlo en 0, 0, 0. Y en size ponganlo en 1, 1, 0.1.

Arrastrenle el material "cañon" desde la carpeta materials hasta el hierarchy

gamer

Hagan doble click en el objeto en el hierarchy para mover la escena hacia el.

En la figura que hay en la esquina superior derecha de la pestaña scene asegúrense que diga "iso", si dice "persp" presionen en la palabra "persp" para que el modo cambie a vista isometrica. En el mismo símbolo, verán que es un cubo, con unos conos apuntándole. Hay tres de colores con las letras de su eje. Presionen el eje X para poner la vista de perfil.

tutorial

unity3d

Vayan a la carpeta scritps

Click derecho > Create > C# Script

Le ponen de nombre "Disparar" le dan enter, y lo abren.

En el editor primero que nada borran todo lo que no vamos a usar, como les dije el post anterior.
Tiene que quedarles así:

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Vamos a escribir primero que nada 3 variables:

Programacion

El primero es un objeto del juego. En este caso ahí va a ir el prefab de la bala.
El segundo es un numero Integro como el que usamos en "velocidad". Este lo vamos a usar para definir que tan seguido tiene que disparar el cañón.
El tercero lo vamos a usar para calcular el tiempo que va pasando desde el ultimo disparo. Como pueden ver este es private osea que este no lo vamos a ver en el inspector, ya que este no necesitamos modificarlo, solo lo vamos a usar para calcular algo.

Después de eso agregan un metodo Update con todo lo de la imagen. Así debería verse el script completo. Asegúrense de escribir bien las mayúsculas, minúsculas, etc.

Videojuegos

Esto es un poco mas complicado de lo que vimos hasta ahora. Voy a tratar de explicarlo de manera simple, pero si no entienden esta bien, ya que estos tuto no son sobre programar, sino sobre hacer el juego en si.

Yo solo les explico las partes de los scripts para que se vayan haciendo a la idea como se hacen y vean si es lo que les gusta.

indie

Este método, como recordaran se activa en cada frame del juego. Osea que constantemente por decirlo de alguna manera.

Lo primero que sucede en el método es tiempo += Time.deltaTime;
La variable tiempo(esa que es privada) es una variable float, osea números. Como no tiene un valor inicial empieza en 0. Y este código lo que hace es sumarle el tiempo que va pasando. Osea una vez que le damos play deja de ser 0 y empieza a sumar.

Lo siguiente que vemos en el código es una condicional. Que se cumple si tiempo es mayor a frecuencia. Frecuencia es un int al que le damos valor nosotros.
Por ejemplo si quiero que dispare cada 10 segundos, le pongo valor 10 a frecuencia. De esa manera cuando le de play y tiempo empiece a sumar y llegue a ser mayor de 10, ahí se cumple la condición, y ocurre lo que esta dentro de los braces.

Lo que esta dentro de los braces, primero que nada es tiempo = 0. Osea lo primero que hace es devolver el valor de tiempo a 0. Por lo tanto la condición no se va a volver a cumplir hasta dentro de 10 segundos.
Lo siguiente dentro de los braces es

blender

Estamos creando una nueva variable, y esa variable es un objeto que instanciamos nosotros. Como ven dentro de Instantiate esta la variable bala que es donde vamos a meter el prefab de nuestra bala.
Por lo tanto lo que cuando el contador llega a 10, aparece un prefab de nuestra bala. Y el contador vuelve a 0. A los 10 segundos se repite, etc, etc.

La ultima parte, le indica al juego que destruya ese clon(cuando instanciamos un objeto es un clon) después de 10 segundos. Esto es porque si no destruimos las balas van a seguir ocupando espacio en la memoria y el juego va a ser injugable después de un tiempo. En 10 segundo la bala seguro va a estar fuera de la vista así que es mejor destruirla.

gamer

Vamos a guardar el código con ctrl + S y vamos a ir a Unity. Después de que compile, si no nos da ningún error. Lo arrastramos al script Disparar desde la carpeta scripts hasta el cubo que creamos en el hierarchy.

Ahora con el cubo seleccionado, vamos al inspector. Y en el script que le acabamos de agregar vamos a ver esto:

tutorial

Son las variables publicas que creamos. En frecuencia pongamosle 2 de momento. Y en bala tenemos que poner el prefab de nuestra bala.

Abran la carpeta prefabs y arrastren el prefab bala desde la carpeta, hasta el espacio de la variable en el inspector(Justo donde dice "None (Game Object)". Y ahora esa variable va a decir bala.

También suban un poco el cubo, porque esta a mitad del piso, y si la bala aparece ahí se destruirá por chocar con el piso. En position pónganle 0, 1, 0. Así estará por encima del suelo.

Por ultimo vamos a hacer un pequeño cambio en el script "bala". Justo después del else agreguen lo siguiente: if (other.tag == "Obstaculo"

unity3d

Hasta ahora la bala se autodestruia si chocaba con cualquier cosa que no fuera el jugador. Pero vamos a hacer que se destruya solo si choca con los objetos con el tag "Obstaculo"(El piso tiene ese tag porque se lo pusimos en el tuto anterior).

Ahora SI, a probarlo!

Denle play, y verán como cada 2 segundos aparece una bala, y se va hacia adelante por su propio script de avanzar.

Si se fijan en el hierarchy cada vez que aparece una bala, se crea un objeto llamado "Bala(Clone)". Y 10 segundos después desaparecen ya que se autodestruye el clon a los 10 segundos como pusimos en el código.

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Sigamos

En hierarchy creen un nuevo cilindro. Asegúrense de no tener el cubo seleccionado clickeando en un lugar vació.

Click Derecho > 3D Object > Cylinder

Selecciónenlo y en el inspector pónganlo en la position 0, 1, 0. En rotation 90, 0, 0. Y en scale 0.8, 0.8, 0.8.

Muevan el cilindro un poco hacia atrás(la herramienta para mover es la tecla W), hasta que quede apenas tocando el cubo.

Programacion

Añádanle el material "cañon" al cilindro. Arrastrándolo desde la carpeta Materials hasta el cilindro en el hierarchy.

Videojuegos

Ahora creen una nueva esfera. Asegúrense de no tener nada seleccionado en el hierarchy haciendo click en un lugar vació. Luego:

Click Derecho > 3D Object > Sphere

Seleccionen la esfera, y en el inspector pónganle en position 0, 1, 0. Y en scale 2, 2, 2. También cámbienle el nombre a "Cañon" y presionen enter. Y pónganle el tag "Obstaculo".

Muevan la esfera hacia detrás del todo. Hasta que el la base del cilindro este dentro. Y pónganle el material "cañon".

Recuerden que pueden mover la escena presionando la ruedita del mouse y arrastrando.

indie

Ahora arrastren el cilindro y el cubo en el hierarchy hasta dentro de la esfera en el hierarchy para que sean child de la esfera.

Abran la carpeta prefabs, y arrastren el cañón desde el hierarchy hasta la carpeta para que se convierta en un prefab.

blender




5.- Hacer que el cañón le apunte al personaje.
gamer

Ahora un ultimo código para este nivel de los tutoriales.

Vayan a la carpeta Scripts y creen un nuevo script

Click derecho > Create > C# Script

Pónganle de nombre "Apuntar" y presionen enter. Ábranlo y déjenlo vació como siempre.

Primero vamos a poner una variable Transform player. Como pueden ver no dice ni public ni private en estos casos es por defecto private en el sentido de que no va a aparecer en el inspector. En esta variable vamos a poner a nuestro jugador, para que los cañones siempre le apunten.

tutorial

Después vamos a completar el resto del script:

unity3d

Esto es realmente sencillo comparado a lo que venimos viendo. El nuevo método void Start () se ejecuta únicamente cuando la escena inicia. No se vuelve a iniciar a menos que la escena inicie de nuevo. Lo que hacemos en el es decirle QUE es lo que va a ir en la variable player.

Ya que esa variable no aparece en el inspector, la llenamos a través de código diciéndole que lo que va en esa variable, es el objeto en el juego que tiene el tag "Player".

Después en el ya conocido método Update que se ejecuta constantemente. Le decimos que el objeto que lleva este script, debe apuntar constantemente a la posición de player.

Guardamos el script ctrl + S y vamos a Unity. Esperamos que compile el script, y lo arrastramos desde la carpeta Scripts hasta el "cañón" en el hierarchy.

Seleccionamos el cañón, y en el inspector le damos apply a las opciones del prefab, así queda guardado que tiene el script apuntar.

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Ahora giremos un poco la cámara en la pestaña Scene(click derecho y arrastrar), y alejemosla un poco(ruedita del mouse). Para tener una vista así:

Programacion

Desde la carpeta Prefabs arrastramos el prefab del jugador hasta el hierarchy. Va a aparecer justo en la punta, así que lo alejamos un poco.

Videojuegos

Ahora denle play, y traten de caminar hacia los lados. Verán como el cañón gira constantemente apuntándoles. Y cada dos segundos dispara una bala. Pero las balas van hacia abajo, ya que el cañón apunta exactamente a nuestros. Vamos a solucionar esto fácil y sencillo.

Seleccionen al Jugador en el hierarchy y creen un nuevo empty object. Asegúrense que el empty object esta como child del jugador, si no es así háganlo child.

Click Derecho sobre el jugador > Create Empty

Un empty object es justamente un objeto vació, si ningún componente excepto el transform.

indie

Con el empty object seleccionado vayan al inspector y pongan position 0, 1, 0. Ahora esta a la altura de la panza.
Ponganle un nuevo tag

Tag > Add...

Ahí van a ver que esta el que ya habían creado(Obstaculo). Presionen el + para crear uno nuevo y pónganle de nombre "Objetivo". Vuelvan a seleccionar el empty object en el hierarchy. Recuerden que el nombre es "Game Object". Y pónganle el tag que acaban de crear.

Van al script Apuntar y le modifican el Start, para que en vez de buscar un objeto de tag "Player" busque un objeto de tag "Objetivo".

blender

Guardan el script. Vuelven a Unity y lo prueban:

gamer

Listo el cañon ya les apunta y les dispara balas cada 2 segundos(Unas balas algo lentas pero eso se puede modificar). Recuerden seleccionar el jugador, y darle apply a las opciones de prefab del inspector. Para que ese objetivo que le pusimos a la altura de la panza, quede guardado.

También guarden la escena y el proyecto.

tutorial




6.- Probando la escena con mas cañones.
unity3d

Ahora que tenemos nuestro cañón, nuestro jugador, y nuestros obstáculos. Vamos a hacer una prueba mas completa.

Primero que nada hagan doble click en el jugador en el hierarchy para acercar la escena a el. En el hierarchy desplieguen al jugador para ver sus child, y seleccionen la cámara.

Quiero que la alejen un poco, y que este un poco mas elevada. Luego rotenla para que apunte al jugador. Esto es para poder ver mejor lo que hay detrás de el jugador, ya que de momento la cámara no la podemos mover.

Recuerden W para elegir la herramienta de mover, E para elegir la de rotar.

Si no se sienten cómodos aun con el espacio 3D prueben estas coordenadas. Con la cámara seleccionada y en el inspector:
position: 0, 5, -4
rotation: 50, 0, 0

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Esa posición/rotación me pareció cómoda. Pero pueden ir probando. Recuerden activar la opción Maximize on Play de la pestaña Game. Para saber mejor como se va a ver.

Otra cosa que pueden probar cambiar es el tipo de cámara entre perspectiva y ortográfica. Yo de momento la voy a poner en ortográfica. Pero mas adelante cuando hagamos una cámara propia, la voy a volver a poner en perspectiva. Ustedes elijan como les gusta mas probando como se ve una y otra.

Esto lo cambian en el inspector teniendo la cámara seleccionada. Es la opción que se llama Projection

Programacion

Cuando hayan terminado con la cámara, hagan doble click en el piso en el hierarchy para centrar el piso. También pongan la vista desde arriba con el icono de la esquina superior derecha de la pestaña scene. Presionando el botón verde.

Videojuegos

Hagan un poco de zoom hasta ver de cerca el piso. Y muevan el cañón a una punta del mapa, con la W

indie

Ahora seleccionen el cañón en el hierarchy y presionen ctrl + D varias veces. Esto es para poner varios cañones. Pongan unos 10.

Después de duplicarlo la cantidad de veces que quieran, verán que los nuevos cañones aparecen "Cañon (1)", "(2)", etc.

Vayan eligiendo cañón por cañón, y muévanlo a un lugar diferente en el mapa.

blender

Tip:

Ahora esto que les voy a decir, es solo para organizar mejor las cosas en el hierarchy, pero esta bueno que lo conviertan en un habito para que no les sea un relajo el proyecto.
En el hierarchy sin tener nada seleccionado.

Click Derecho > Create Empty

Esto crea un objeto vació que no hace nada. Cámbienle el nombre con F2 y pónganle "Cañones". Ahora arrastren todos los cañones dentro de el como sus child.
Esto ayuda a que hayan menos cosas en el hierarchy y se pueda trabajar mas cómodamente.


gamer

En el hierarchy seleccionen al jugador, y en el inspctor cambien el Jump Power que esta en 6, pónganlo en 12 como para poder saltar por encima de las balas. Y el Move Speed Multiplicator que esta en 1, pónganlo en 2 para moverse un poco mas rápido.

tutorial

Por ultimo seleccionen el prefab de la bala en la carpeta Prefabs. Y en el inspector cámbienle el valor de velocidad, prueben con 10 a ver que tal.

Asegúrense de tener Maximize on Play de la pestaña game activado. Y denle play a ver si pueden esquivar bien las balas de cañón. En lo personal, me hicieron mierda :c

unity3d

Y eso es todo por ahora amigos!

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]




Programacion

Videojuegos

indie

blender

gamer




tutorial

Y con eso, amigos míos, concluye la segunda y ultima parte del Nivel: Básico.

Se que de momento parece algo super simple. Pero si antes de empezar con este tutorial, no sabian nada de Unity, y de verdad lograron llegar a esto leyendo solo dos post, es algo realmente muy bueno.

Ademas de eso no olviden que es solo el nivel básico, y lo que se viene de ahora en mas sera mejor y mas avanzado. Al terminar los tutoriales deberíamos tener un juego de buena calidad.

Me cuesta un poco ponerme de su lado y saber que les parece. Por un lado se que mi yo antes de empezar hubiera matado por aprender esto en solo dos post. Por otro lado mi yo de ahora piensa que es algo simple.

Si quieren iluminenme dándome su opinión al respecto en un comentario, asi como cualquier duda que pueda surgirles, o si se sienten mas comodos mandenme un mensaje privado.

Por favor cualquier duda que tengan pongan la en los comentarios.

unity3d

Les agradezco por leer estos tutoriales, y por su paciencia. Cualquier critica/consejo es bienvenida. Hacer post de contenido propio lleva mucho trabajo así que les agradezco mucho a quienes decidan compartir <3

Si les gusto, siganme para no perderse el siguiente, y si pueden recomiendenlo con sus seguidores.

Y si quieren pueden seguirme en Facebook, Twitter, o Youtube.

O mejor aun en mi blog que es donde pienso postear todo en un futuro:
http://shioo4play.blogspot.com.uy/

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

Gracias por leer, Saludos!

ProgramacionVideojuegosindie


blender

19 comentarios - Haz Tu Primer Videojuego [Nivel: Básico (P.2)]

joakokgrin +1
Buen post kpo!!! +10
Shioo4Play +2
Muchas gracias man
bit001 +1
+10 pero bajale un poco el color al piso que me dio cancer en la retina
Shioo4Play +1
jjaja tan brillante esta? Yo siempre tengo el brillo al mínimo en todo así que no me di cuenta, para la que viene lo bajo un toque xD
Gracias por pasar!
HeavenKnight28 +1
Tremendo laburo loco, yo leo libros de Unity mientras q viajo a la facultad, si queres te paso alguno pero por lo que veo ya sabes una cantidad.
Shioo4Play
Gracias capo! Yo soy medio novato en la vida directamente xD Pero de momento lo que tengo pensado aprender ahora es animación. Ya lo decidi hace un buen tiempo, se un poco de todo, menos de animar
HeavenKnight28 +1
@Shioo4PlayDe nada, Lo que esta bueno es hacerte un grupo de amigos que se repartan las tareas, porque sino terminas queriendo aprender todo y despues te das cuenta tarde que no podes abarcar script, modelar, musica, animacion, ilustrar, etc vos solo. A mi me paso
Shioo4Play
@HeavenKnight28 Si esa es la posta. Enfocarte en un rol, y trabajar con un grupo de gente que cada uno se encargue de algo. Pero esta muy dificl encontrar gente comprometida, que se quiera unir para trabajar en algo juntos gratis. La mayoría que dicen que si después se vuelan.

Por eso llega un momento que si queres hacer videojuegos, terminas haciéndolos solo
Aldodzb +1
Sos creadores ahora? :O

Que pasó shio, antes eras chevere

Haz Tu Primer Videojuego [Nivel: Básico (P.2)]
Shioo4Play +1
jajaja Evolucione a creadores el post pasado. Pero esto es algo bueno, así hay, menos creadores craperos.... hasta que yo empiece a crapear también claro
Aldodzb +1
@Shioo4Play todo sea por los bits :V
tomith +1
Sigue subiendo más post así, me estas ayudando mucho.

+10, favs!
Shioo4Play
Me alegra que te sirvan
lordwa
jajaj muy bueno lastima q no me funca el unity no me alcanzan los requistos tengo apenas 1.8 pentium
Shioo4Play
Uh que bajon y eso que Unity pide bien poco :/
Jeanpyxd +2
Cuando subís el próximo?
Shioo4Play +1
En una semana mas o menos. Nose si me seguis pero sino te recomiendo que me sigas para no perdertelo. También seria de gran ayuda que compartan este post ya que lo subí en un mal horario y se salio de la home muy pronto :C
macol777 +1
@Shioo4Play no es por molestar pero en la parte #9 es scale no Size.

P.D aqui leyendo el Libro , es todo un universo
Shioo4Play +1
jaja si es verdad, es que repito tantas veces como hacer cada cosa que me termino mareando. A partir del proximo nivel me va a ser mas facil porque solo voy a decir, "muevan", "cambien el tamaño", "roten". Y no voy a explicar el como se hace cada cosa xD

Si el libro ese es una joya :3
Monsa +1
Muchísimas gracias!!! +10
Shioo4Play
Gracias a vos!
tomyno +2
Gracias Por tomarte el tiempo de hacer este tipo de post.La verdad a mi me esta sirviendo mucho algunas de estas cosas ya las sabia pero otras no entendia nada de nada,espero a que publiques los otros tutoriales por que se me hace mas sencillo estar leyendo esto a los videos que no te explican nada y solo te lo ponen
tomyno +1
@Shioo4Play De maravilla .Y ojala nos enseñes aunque sea un poco a modelar el personaje o a crear el controlador de animaciones eso por lo menos a mi y pienso que a muchos mas nos servira puesto que las animaciones que trae unity son buenas pero hay mejores o se pueden hacer mejores
Shioo4Play +1
@tomyno Mira cuando termine el nivel intermedio(Que hoy termino la primer parte y la subo mañana al mediodía). Antes de pasar al nivel avanzado, voy a hacer varios "Extra" para profundizar un poco en: C#, Blender, 2D, y alguna cosa mas. Así que voy a tocar blender para el modelado 3D
tomyno
@Shioo4Play Me parece perfecto gracias mil veces
silvestre2021
iluminanos con el nombre del libro.. tio Shioo4play
Shioo4Play
Cual libro? Es que estoy con el 4to post en la cabeza y no me acuerdo bien xD
LacatoxFlores -4
Puff Estudia Pedazo de basura humana(https://www.facebook.com/shioo.retter.16?fref=nf), tu crees que cualquiera puede enseñar a las personas, si quiera estudia conputacion e informatica o ing de sistemas o se catedrático , solo eres un pedazo de mierda(https://www.facebook.com/shioo.retter.16?fref=nf) que ofende a otras personas y como ves que esa persona es mejor que tu tratas de cualquier forma de perjudicar y si esta en algun foro tratas que le expulsen de ahi por que por que es mejor que tu ya que esa persona tiene estudios y tu no , solo efendes y nada mas basura si tu este es tu facebook == https://www.facebook.com/shioo.retter.16?fref=nf

y dices que trabajas en una empresa de video juegos jajajaj, tu post me da cancer , como puedes poner un post tan pero tan basura,existiendo muchos tutoriales en el mundo deseas mostrar tus estupido rasonamiento de programacion que asqueroso eres. pos data eres basura y seras basura por que solo eres basura . aqui las personas desean aprender a programar decentemente y tu les enseñas basuras de ideas haces confundir a las personas no hagas eso xD. Pos Data: Soy tu Adorable Vecino xD.
y no ofendas a los taringeros :https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xfp1/v/t1.0-9/11949347_109788906040298_5872225517019818072_n.jpg?oh=8656e3c4c4a309a5d73d15d8a2725d08&oe=566ECFC5&__gda__=1446606412_f8218796fc4ff54366e946c9b4769e6b
esa es el link de la imagen que saque para que vean lo que disen de los taringeros
Jeanpyxd +2
Le estás diciendo que vaya a estudiar y se nota que vos apenas sabes escribir.
Por lo que vi, te hiciste esta cuenta con el único motivo de comentarle todos sus posts con este comentario de mierda. Se nota que sos un envidioso.
Salu2 papu.
Shioo4Play +3
@Jeanpyxd Esta rayadito el pibe este. Es uno que se hizo como 4 face truchos y a todos se lo expulsaron de los grupos de Unity por la misma razon de ponerse a insultar y bardear. Subía un proyecto de Mu en Unity que es realidad hecho por un ruso y se daba el crédito a el mismo encima lo spameaba 10 veces por día en todos los grupos xD
Zupy +1
Guau, me sieno como si pudiera hacer cualquier cosa, (solo con el tutorial basico ) y todo gracias a ti, sigue por favor que mi cerebro me pide mas. Muchas gracias por tu tiempo
Shioo4Play +1
Gracias a vos por la onda depositada en cada comentario, la verdad valoro mucho eso
Kalzman
El script de disparar y apuntar no me funciono, y los tengo tal cual sale en el imagen . Solo me funciono el script Bala