Programación de Disparo de Bola de Fuego en Videojuegos 3D
Clase 17 de 33 • Curso de VR con Unity
Contenido del curso
- 6

Creación y Configuración de Terrenos en Unity 3D
08:42 - 7

Creación de Escenarios en Unity: Terreno y Erosión Realista
10:19 - 8

Texturización de terrenos en Unity: creación de entornos realistas
10:56 - 9

Añadir y Gestionar Vegetación en Escenas 3D con Unity
06:54 - 10

Añadir césped y efectos de viento en Unity 3D
06:57 - 11

Creación de Skybox en Unity: Técnica y Aplicaciones Prácticas
06:53 - 12

Integración de Armas y Escudo en Realidad Virtual con HTC Vive
12:09
- 13

Programación de Lógica de Armas en Realidad Virtual
10:22 - 14

Programación de Controles y Comportamiento de Armas en Unity
10:08 - 15

Programación de Acciones con Controladores HTC Vive en Unity
10:02 - 16

Configuración de Bolas de Fuego en Unity para Realidad Virtual
09:21 - 17

Programación de Disparo de Bola de Fuego en Videojuegos 3D
10:11 - 18

Solución de Bugs en Audio y Recarga de Magia en Unity
04:44 - 19

Colliders y Rigidbody en el diseño de personajes y armas en Unity
08:25 - 20

Programación de Vida en Videojuegos: Uso de Getters y Setters
05:23
- 21

Creación de HUD en VR: Canvas dinámico y barras de vida y maná
08:50 - 22

Configuración de Barras de Vida y Maná en Unity
05:55 - 23

Programación de Daño en Videojuegos: Lógica de Armas y Magia
11:07 - 24

Programación de Barras de Vida y Maná en Unity
08:01 - 25

Animaciones y Configuración de Dragones en Unity
11:40 - 26

Configuración de Dragones: Vida, Daño y HUD en Videojuegos
08:31 - 27

Animaciones de Muerte y Desaparición de Enemigos en Unity
10:01 - 28

Creación y Configuración de Prefabs y Rutas para Dragones en Unity
11:24
- 29

Diseño e Implementación de Waypoints en Unity para Movimiento de Dragones
06:48 - 30

Movimiento y Rotación de Personajes en Unity
12:39 - 31

Programación de IA de Dragones en Videojuegos
13:06 - 32

Programación de Animaciones de Ataque en Videojuegos con Unity
07:43 - 33

Configuración de Sonido 3D en Realidad Virtual con Unity
06:58
Para calcular la fuerza (o velocidad) a la que debemos lanzar un proyectil, necesitamos conocer primero la diferencia de posición en que se encuentra el control derecho en dos momentos.
Para ello hemos definido antes, al final del método Update(), en el script de weapons, dos variables particulares:
lastPositionRight, a la que le hemos asignado el valor derightHand.transform.positionlastPositionLeft, a la que le hemos asignado el valor deleftHand.transform.position.
Nótese que todos los objetos tienen la propiedad transform, que nos dan acceso a position, scale y rotation, entre otras.
La fuerza con la que se hará el lanzamiento del proyectil debe ser definida como una variable de tipo Vector3, ya que es este el tipo de valor que podremos utilizar luego para indicar el impulso con el que será disparada la magia.
Debemos tener en cuenta que hemos definido antes la magia de fuego como un objeto hijo del arma alternativa, con una componente Rigid Body con _constrains en x, y y z que la mantendrían vinculada a la posición de esta, por lo que al salir disparada, debemos desvincularla para que sea entonces un objeto independiente y su desplazamiento sea autónomo. Esto lo hacemos asignando a la propiedad <GameObject>.transform.parent el valor de null y al <GameObject>.GetComponent<Rigidbody>().constraints el valor de RigidbodyConstraints.None.
Finalmente para lanzar el proyectil, le aplicamos a la instancia de la bola de fuego creada al presionar el trigger en el control, la fuerza que hemos calculado antes, para lo cual usando la función: <GameObject>.GetComponent<Rigidbody>().AddForce(<vector de fuerza>, ForceMode.Impulse). El parámetro ForceMode.Impulse indica a la función que el vector pasado debe ser aplicado como una velocidad inicial (un impulso) y no como una aceleración, que tendría un comportamiento diferente.
Para cambiar el efecto de sonido de la magia al momento de dispararla y reproducirlo tan solo una vez, usamos la función <GameObject>.GetComponent<AudioSource>().PlayOneShot(<AudioClip>)