En la conferencia anterior, añadimos la capacidad de conducir el tanque rojo alrededor y la torreta aquí realmente se movería
hacia arriba y hacia abajo sobre la base de donde se calcula que tendría que ser con el fin de disparar el proyectil,
dada la concha, la velocidad o la velocidad.
Pero como puedes ver, nuestros proyectiles no tienen una velocidad ni un número de revoluciones por el momento, así que tenemos
que ponerlos para completar este ejercicio.
Vamos a entrar en la cáscara de fuego.
Los caparazones se están creando aquí arriba en Create Bullet.
Ahora, antes las conchas tenían código de movimiento en el script de la concha, lo hemos sustituido por el script de la concha,
que no tiene ningún movimiento.
Queremos confiar en una parte del sistema de física y de la unidad para que empuje nuestros proyectiles por el aire por nosotros.
Así que voy a crear un objeto de juego aquí llamado Shell que en realidad se agarra a la cáscara que se crea.
Luego, una vez que lo tenemos, vamos a establecer la velocidad de su cuerpo rígido a la velocidad que
queremos establecer.
Así que vamos a decir aquí, shell dot get component, rigid body dot velocity es igual a la velocidad multiplicada por una dirección para convertirla
en velocidad.
Y en este caso, la dirección será la forma en que la base de la torreta se gira.
Así que la base de la torreta punto adelante.
Así que ese será el vector de avance o el vector z de esa base de la torreta para establecer esa velocidad inicial.
De acuerdo.
Así que probemos esto, guardémoslo y volvamos a la unidad.
Y una vez cargado, recuerda que seguimos disparando el tanque verde con la barra espaciadora.
Ahora bien, fíjate en que no es perfectamente exacto.
Cuanto más me alejo, mejor es el porcentaje de aciertos.
Podría ocurrir que llegara aún más lejos aquí, supongo.
Ahora, la razón por la que esto sucede es por la forma en que estamos calculando la distancia
entre los tanques, porque estamos calculando la distancia de los tanques más o menos de aquí a aquí, en
lugar de la bala a allí.
Así que lo que puede hacer es poner un poco de un factor de ajuste allí si usted no puede conseguir
la bala a partir de la posición exacta del tanque y si volvemos en el código, podemos bajar en calcular
el ángulo donde x recordar que es nuestra distancia entre los dos objetos, que es la magnitud aquí.
De hecho, puedes hacerlo un poco más pequeño.
Así que ponle un factor de confusión de uno y guárdalo.
Volvamos a la unidad y pulsemos el play para ver el efecto de eso ahora.
Así que realmente estamos golpeando el tanque.
Y debo decir que sólo casi pasa por encima de la parte superior del tanque.
Ahora, recuerda, el primer lote de balas que viste en ese momento no le dio al tanque porque el
tanque todavía estaba girando, ¿de acuerdo?
Porque tiene una especie de ritmo de giro lento.
Así que podría empezar a disparar en la dirección equivocada antes de estar realmente alineado.
Ahora, ¿qué pasa si usamos el otro ángulo?
Recuerde, tiene dos ángulos, tiene un ángulo bajo, y tenemos un ángulo alto y hemos elegido en
este caso para verdadero vamos a poner falso aquí, que utilizará el ángulo alto que se calcula.
Así que guardemos eso.
Vuelve a entrar aquí y lo haremos de nuevo.
Así que vamos a presionar el play ahora la torreta, mira ese ángulo en eso.
Eso es un ángulo alto y las balas van a ir todo el camino hacia arriba y todo el camino hacia abajo y luego golpear
nuestro tanque.
Permítanme que me aleje un poco ahora.
También puedo salirme del camino, lo que es bueno, supongo, si juegas contra un personaje
del ojo.
Bien, ahora las balas actualmente no van en la dirección que viajan y deberían.
Así que también vamos a arreglar eso.
Ahora eso va a estar en el código de la cáscara del ojo.
La cáscara tiene que el cuerpo rígido en él y es la velocidad del cuerpo rígido que estamos estableciendo de nuevo en la
cáscara de fuego aquí para que podamos tomar esa velocidad y hacer que el cuerpo de balas o supongo cuerpo modelado girar en esa misma dirección
que está viajando.
Así que aquí vamos a añadir en un cebo cuerpo rígido y vamos a vincular que
hasta el cuerpo rígido real en la bala para que no tengamos que seguir, obtener componente, obtener
componente, obtener componente cada bucle básico que hacemos porque es muy bastante proceso un
pesado para hacer eso.
Bien, entonces iremos a este punto para obtener el cuerpo rígido del componente así.
Y luego en la actualización diremos que este punto de transformación punto adelante es igual a r b.
No lo hagas.
Velocidad, por lo que apuntará en esa dirección.
Bien, guarda eso y volvemos a cambiar a unity y pulsamos play.
Y ahora.
Puedes ver que las balas suben y se dan la vuelta y cuando bajan, están realmente
orientadas en la dirección correcta.
Muy bien.
Para terminar esta sección de proyectiles, vamos a divertirnos un poco con nuestro tanque.
Así que lo que tengo aquí, se puede ver un tanque de disparo continuo.
Ahora bien, algunas de esas balas no son especialmente precisas porque, no lo olvides, a medida que se van instanciando,
pueden colisionar entre sí, pero la mayoría parece dar en el blanco.
Lo que me gustaría hacer, sin embargo, es programar esto para que si el tanque se sale del
rango y no hay ángulo que pueda ser calculado, que el pequeño tanque verde vaya tras el tanque rojo y realmente
se mueva.
Así que, aunque no dé en el blanco, sabe que está lo suficientemente cerca como para que, si gira correctamente,
pueda hacerlo.
Pero entonces, si me muevo hasta aquí y se pone fuera de alcance, en cuanto a la distancia, dejará
de disparar y entonces vendrá de nuevo a por nosotros.
No puedo alejarme lo suficiente en la pantalla como para que no puedas ver el tanque rojo desde aquí.
Oh, ahí vamos.
Bien, así que una vez que me acerque, empezará a disparar de nuevo, ¿verdad?
Así que vamos a ir a nuestro script shell de fuego y añadir el código que nos permitirá hacer esto.
En primer lugar, vamos a añadir una velocidad de movimiento para nuestro tanque.
Así que la velocidad de movimiento flotante y vamos a establecer que a decir tres metros por segundo.
Ahora tenemos que comprobar si tenemos un ángulo para determinar si podemos movernos o si podemos disparar.
Y eso significa que esta torreta giratoria va a tener que devolver nuestro ángulo aquí.
Así que vamos a poner esto como un signo de interrogación flotante de retorno y luego debajo de aquí vamos a devolver ángulo.
Así que esto volverá a nuestra actualización.
Abajo en la actualización, vamos a crear un flotador.
El ángulo es igual a eso.
Y entonces, en lugar de bajar la llave, vamos a ir.
Si el ángulo no es igual a null, entonces podemos crear una bala.
Si no, podemos mover el tanque.
Ahora podemos mover el tanque con bastante facilidad con un traslado.
Así que este punto transformar, punto traducir.
Porque recuerda que, de todos modos, vamos a girar el tanque para enfrentarnos al enemigo.
Así que todo lo que tenemos que hacer es darle un pequeño empujón hacia adelante.
Así que cero cero y en la dirección Z, el tiempo punto delta multiplicado por nuestra velocidad de movimiento que tenemos
allí.
Bien, genial.
De hecho, antes de mostrarte esto en acción porque acabas de verlo en acción, quiero
cambiar nuestra velocidad aquí.
Bajemos eso a como uno.
Así que es un poco más lento para ponerse al día, pero cinco, por lo que es más rápido para dar la vuelta.
Bien, guarda eso.
Volvamos a la unidad y probemos esto.
Así que pulsaremos el play y empezaremos a conducir mi tanque por ahí.
Así que ahora que estoy fuera de alcance, tardará mucho en alcanzarme.
Pero fíjate que sigue girando hacia el tanque rojo.
Ahora, en cuanto vuelvo a estar al alcance, aunque no esté girado correctamente, sigue
intentando disparar y finalmente girará hasta el punto de poder dispararme.
Bien, genial.
Sí.
Bueno, con esto termina esta sección sobre proyectiles, pero hay muchas cosas que puedes hacer.
Y espero que esto te haya inspirado a echar un vistazo a las matemáticas de esto y a toda una variedad
de otros tipos de proyectiles que puedes producir.
Y ahora deberías saber cómo armar una pequeña A realmente sencilla. I. personaje que puede disparar a su
enemigo.