Introducci贸n al curso y proyecto

1

Qu茅 aprender谩s para programar videojuegos 2D con Unity

2

Introducci贸n a Unity e instalaci贸n

3

Configuraci贸n del proyecto y la interfaz de Unity

4

Importaci贸n de assets

5

Proyecto final

Herramientas para 2D

6

Instalaci贸n de los 2D extras

7

Uso de tilemaps y palettes

8

Soluci贸n del reto: creaci贸n del escenario

Gameplay

9

Agregando nuestro primer script

10

Movimiento del jugador

11

Comportamiento de la c谩mara

12

Disparo direccional

13

Creaci贸n de un proyectil

14

Manejando la cadencia de disparo

15

Crear un target

16

Comportamiento de enemigo

17

Soluci贸n del reto: da帽o a Personaje y Enemigos

18

GameManager

19

Controlar las instancias de enemigos

20

Creaci贸n de Spawnpoints de enemigos

21

Creaci贸n de 铆tems para el jugador

22

Creaci贸n de PowerUps

23

Usando los PowerUps

24

Soluci贸n del reto: invulnerabilidad temporal del jugador

25

Registro de puntuaci贸n

26

Delimitar y mejorar el escenario

27

Interactuando con el escenario

Interfaz de usuario

28

Comenzando a crear la Interfaz de Usuario (UI)

29

Pantalla de Game Over

30

Diagramaci贸n del HUD

31

Comportamiento del HUD

Implementaci贸n de arte

32

Animaci贸n del personaje

33

Soluci贸n del reto: animaci贸n de los enemigos

34

Configurar arte de la UI

35

Agregar VFX: efecto de parpadeo

36

Agregar VFX: sacudiendo la c谩mara

37

Agregar m煤sica y SFX

Depuraci贸n y 煤ltimos toques

38

Depuraci贸n y correcci贸n de detalles

39

Crear un ejecutable para PC

40

隆Conoce los proyectos de este curso y dales feedback!

41

Conclusi贸n

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Disparo direccional

12/41
Recursos

Aportes 18

Preguntas 6

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Para los que son curiosos y les gusta saber de donde vienen lo que acabamos de hacer:

  • Obtenemos la posicion del mouse y lo transformamos a cordenadas de mundo.
  • Normalizamos este vector para que dicha posici贸n tenga una magnitud total a 1:
    Normalizaci贸n de vectores :
    https://www.matematicas10.net/2017/03/ejemplos-de-normalizacion-de-vectores.html
  • Asignamos la posici贸n
    Hasta aqui pueden hacer una pausa probar el codigo y ver como funciona(Es bastante interesante y puedes probar multiplicar o dividir el vector normalizado y ver que sucede)
    aim.position = (Vector3) _aimDirection.normalized * 2 + transform.position;
  • Para que la 鈥渕ira鈥 siga al jugador, le sumamos la posici贸n del mismo, lo cual lo hara que el jugador se vuelva un tipo centro.
    Para comprender mejor como funciona la posici贸n de la mira, podemos hacerlo a partir de la ecuaci贸n del circulo y revisar el curso de algebra lineal de platzi 馃槃

Introduccion al algebra lineal: https://platzi.com/clases/intro-algebra/

Articulo sobre la ecuaci贸n de un circulo https://es.khanacademy.org/math/geometry/xff63fac4:hs-geo-conic-sections/hs-geo-circle-expanded-equation/a/circle-equation-review
https://www.analyzemath.com/spanish/CircleEq/CircleEq.html

Le hice una imagen al puntero: (Se ve un poco mal aqui)

Para hacer casting de cualquier cosa en C#: (int)nombreVar. o algo como (float)nombreVar; lo que es f谩cil.

馃 Para los que en Visual Studio no les reconoce el autocompletado sigan estos pasos:

En unity: Pesta帽a edit >> preferences >> External Tools
y en External Script Editor seleccionan a Visual Studio.

Cierra Visual y lo vuelven a abrir dando doble click al script y van a ver una diferencia en c贸mo se acomoda todo dentro del IDE. Saludos! 馃

Al m茅todo de ScreenToWorldPoint, le pasamos la posici贸n del mouse. esto lo hacemos sacando del objeto Input, el mouse position: Input.mousePosition.

Vector2 es para f铆sicas 2D y Vector3 es para f铆sicas 3D.

Para normalizar los vectores, tenemos normalized como m茅todo.

Hace tiempo que no tenia tanto hype de desglosar una formula 馃槀馃槀

Si tienen el error que la mira no sigue como deberia (como en el video) es porque (en mi caso) puse mal el ScreenToWorldPoint asegurate que sea asi

ayuda por favor, que estoy haciendo mal, no se ve la referencia de mira verde!!! :,c

![](

Es buena pr谩ctica serializar varias propiedades, para que puedas desde el editor de Unity, cambiar muchas variables y referencias. Esto es muy importante a la hora de relacionar los objetos (Cosa que ocurre constantemente en lo videojuegos)

Para obtener la direcci贸n de nuestro mouse en el juego, tenemos que crear la referencia a la c谩mara principal, para hacer una instacia de c谩mara en C# : Camera nombreVar; Luego el objeto Camera, tiene el m茅todo ScreenToWorldIdPoint, con el que obtenemos una traducci贸n de la posici贸n del mouse, a puntos en el mapa.

Para los que les dio un error
Cuando se mueve el personaje, la mira se cambia de direcci贸n (mostrando la opuesta al movimiento del personaje) e ignora la posici贸n del mouse por un momento. Para solucionarlo la l铆nea de c贸digo:

facingDirection = camera.ScreenToWorldPoint(Input.mousePosition) - transform.position; 

Cambien por:

facingDirection = camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, -Camera.main.transform.position.z)) - transform.position;

Y con eso funciona perfectamente 馃槃. Espero que les sirva!

Esta clase me vol贸 el cerebro 馃槀
Pero siempre resulta bueno reforzar esta parte de las matematicas

Genial

Wow!, Me encanta todo lo que he aprendido hasta ahora鈥

Despu茅s de estar jugando con el c贸digo, llegue a hacer estas l铆neas para que la mira recorra una elipse en vez de una circunferencia usando matem谩ticas. Les dejo el c贸digo si quieren usarlo, para variar el tama帽o de la elipse, cambien el coeficiente que multiplica a xaim o yaim.

//Movimiento de la mira
        facingDirection = camera.ScreenToWorldPoint(Input.mousePosition) - transform.position;
        float xaim = aim.position.x;
        xaim = transform.position.x + facingDirection.normalized.x;
        float yaim = aim.position.y;
        yaim = transform.position.y + facingDirection.normalized.y;
        Vector2 aimposition;
        aimposition.x = xaim * 2;
        aimposition.y = yaim * 6;
        aim.position = aimposition; 

Me estaba generando un error porque player no ten铆a ninguna c谩mara asignada y no me permit铆a arrastrar la c谩mara que creamos. En el atributo Camera del script Player, le asign茅 Main Camera y empez贸 a funcionar.