‫Así que vamos a crear una función de disparo y vamos a asociar esta función con el botón izquierdo del
‫mouse.
‫Y aquí pueden ver que estoy dibujando esferas de depuración en la punta de nuestro barril de torreta solo para probar que
‫este mapeo de acción está funcionando.
‫Cada vez que hago clic con el botón izquierdo del mouse, algo está sucediendo.
‫Oye, bienvenido de nuevo.
‫En este video, vamos a hablar sobre cómo crear una función de disparo o una función que podamos
‫usar cuando queramos generar nuestros proyectiles.
‫Así que vamos a crear una función de disparo y la vincularemos a un mapeo de acción.
‫Ahora, hemos estado usando asignaciones de ejes.
‫Un mapeo de acciones es similar.
‫Hablemos de eso ahora.
‫Aquí hay una sección de una captura de pantalla del mapeo de acción de fuego que tenemos en la configuración de nuestro proyecto.
‫Verá que tenemos el botón izquierdo del mouse asignado al mapeo de acción de fuego.
‫Ahora, un mapeo de acciones es muy parecido a un mapeo de ejes.
‫Puede asignarle una tecla o un botón.
‫Y al igual que un mapeo de ejes, requiere una función que se pueda vincular al mapeo de acciones.
‫Ahora, las asignaciones de ejes disparan cada fotograma del juego.
‫Son como la función de tic y el valor flotante pasado cambia según los botones que
‫se presionen.
‫Las asignaciones de acciones son ligeramente diferentes.
‫Una función de devolución de llamada vinculada a un mapeo de acción no toma parámetros de entrada, y todo lo que sucede es que cuando
‫presiona el botón, se llama a la función.
‫Lo que sucede dentro de la función depende de nosotros como desarrolladores.
‫Ahora, los mapeos de acción son únicos.
‫No suceden en cada fotograma.
‫Solo suceden una vez cuando presionas el botón.
‫Entonces, si suelta el botón y lo presiona nuevamente, la función se llamará una vez más.
‫Ahora, cuando vinculamos funciones a las asignaciones de ejes, usamos el eje de vinculación para las asignaciones de acciones, usamos
‫una función llamada acción de vinculación y toma entradas similares a las del eje de vinculación.
‫Toma el nombre de la asignación de acciones como un literal de cadena.
‫También requiere un puntero a la clase.
‫Estamos vinculando la función para la que podemos usar esto y, por supuesto, requiere una función de devolución de llamada.
‫Ahora, se necesita un parámetro adicional para que el eje de enlace no requiera una constante de enumeración que especifique si
‫deseamos o no que se llame a esta función cuando presionamos el botón o cuando lo
‫soltamos.
‫Entonces, hay dos opciones para este parámetro de entrada, la constante de enumeración, i. mi. presionado y la enumeración constante,
‫i. mi. liberado.
‫Esto significa que podemos llamar a la acción de enlace pasando en i. mi. presionado si nos gustaría vincular una función de devolución de llamada
‫para cuando presionamos el botón y en su lugar si usamos i. mi. liberado, nuestra función de devolución de
‫llamada se llamaría cuando se soltara el botón para nuestra función de disparo.
‫Nos preocupa cuando presionamos el botón.
‫Así que hagamos una función de fuego y vinculémosla al mapeo de acción de fuego.
‫Ahora estoy aquí en el spawn base y la razón por la que estoy aquí en el estanque base es porque esta función de fuego es algo
‫que podemos usar en la clase de tanque y en la clase de torre.
‫Entonces, si lo colocamos aquí en el estanque base, tanto el tanque como la torre heredarán esta función.
‫Y dado que tanto el tanque como la torre van a disparar proyectiles, simplemente pueden heredar la
‫función y usarla.
‫Ahora, dado que me gustaría acceder a la función en ambas clases secundarias, puedo colocar esta función aquí en
‫la sección protegida, al igual que rotar torreta.
‫Entonces, bajo la rotación de la torreta, voy a crear una función de vacío llamada fuego que no requiere entradas y
‫podemos seguir adelante y definir la función de fuego en función del CPP.
‫Así que aquí está basado en CPP y justo debajo de la torreta giratoria, voy a colocar la función de disparo
‫y necesitamos calificar completamente este nombre de función y darle un cuerpo de función.
‫Así que ahora tenemos una función de fuego.
‫Ahora, el siguiente paso es vincular esto a un mapeo de acción.
‫Ahora solo queremos vincular esta función en la clase de tanque porque el tanque es la única clase que tomará
‫la entrada del usuario.
‫Llamaremos a la función de fuego en la clase torre más tarde, pero eso será como resultado del código
‫que creamos y no como resultado de la entrada del usuario.
‫Así que estamos aquí en Tank CP y vamos a vincular esto y configurar el componente de entrada del jugador tal como
‫usamos el eje de vinculación.
‫Así que vamos a usar el componente de entrada del jugador.
‫Entonces, el componente de entrada del jugador y la función serán acciones de vinculación.
‫Ahora, la primera entrada será el literal de cadena, que envolveremos en una macro de texto como de
‫costumbre.
‫Y este mapeo de acciones se llama fuego.
‫Ahora, el siguiente parámetro será esa constante de enumeración que determina si queremos o no que se
‫llame a esta función cuando presionamos el botón o cuando lo soltamos.
‫Y lo vamos a utilizar, subrayo presionado.
‫Ya que nos gustaría que se llamara a nuestra función cuando presionamos el botón.
‫Ahora, el siguiente es el objeto de clase de usuario que será este.
‫Y finalmente tenemos nuestra función de devolución de llamada para que podamos decir un tanque de fuego.
‫Y ahora nuestra función de fuego está ligada al mapeo de acción de fuego.
‫Entonces, sabemos que nuestra función de disparo está ligada al mapeo de acción de fuego, pero nos gustaría una
‫confirmación visual y ese será su desafío.
‫Entonces, en la función de disparo, me gustaría que dibujaras una esfera de depuración.
‫Ya hemos visto cómo hacer esto, así que continúe y complete los parámetros con los valores
‫que considere apropiados.
‫Usa la ubicación del punto de generación del proyectil.
‫Ahora, el punto de generación del proyectil es un componente de escena de uso y ha visto que los componentes tienen una
‫función llamada obtener la ubicación del componente.
‫Esto devuelve un vector F.
‫Esto es lo que puede usar para obtener la ubicación del punto de generación del proyectil.
‫Ahora, cuando llames a dibujar la esfera de depuración, utiliza una duración de unos 3 segundos para que podamos ver esa esfera durante
‫un rato antes de que desaparezca.
‫Pausa el video y haz esto ahora.
‫Bueno.
‫Así que estoy de vuelta aquí en Bass Pond y aquí en Bass Pond.
‫CP Voy a incluir asistentes de depuración de dibujo.
‫Entonces tenemos acceso para dibujar la esfera de depuración.
‫Así que voy a decir que incluya ayudantes de depuración de dibujo.
‫Y ahora aquí abajo en la función de disparo, podemos dibujar la esfera de depuración.
‫Ahora, lo primero que quiero hacer es obtener la ubicación del punto de generación del proyectil.
‫Ahora puedo crear un vector f local para esto y puedo llamar a esta ubicación del punto de generación del proyectil y
‫puedo inicializarlo usando el punto de generación del proyectil.
‫Y llamando a obtener la ubicación del componente.
‫Así que ahora tengo la ubicación del punto de generación del proyectil y esto es lo que puedo usar cuando llamo a dibujar la esfera
‫de depuración.
‫Así que voy a llamar a dibujar esfera de depuración.
‫Y para la primera entrada necesitamos el mundo y sabemos que podemos obtener el mundo usando get world next.
‫Necesitamos el centro de la esfera que será la ubicación del punto de generación de proyectiles.
‫Así que eso será lo que paso como el segundo parámetro.
‫Y luego necesitamos el radio de la esfera.
‫Ahora voy a tener una pequeña esfera.
‫Le daré un radio de, digamos, 25 F para la cantidad de segmentos que solo usaré 12 y para el color puedo
‫usar el color F.
‫Lea ahora cuatro líneas persistentes de dibujo.
‫Vamos a tener nuestras líneas colgando durante 3 segundos para que podamos hacer esto falso porque no queremos
‫que persistan para siempre.
‫Vamos a darle a esta esfera de depuración una vida útil de tres F Así que sigamos adelante y compilemos esto ahora y voy
‫a presionar reproducir y hacer clic y ahora podemos ver nuestra esfera de depuración y, por supuesto, desaparece después
‫de 3 segundos.
‫Ahora bien, esta es una buena confirmación de que nuestro mapeo de acción está funcionando y también nos brinda
‫verificación de la ubicación del punto de generación del proyectil.
‫Entonces, una vez que comencemos a generar proyectiles, sabemos que se generarán en la ubicación correcta,
‫como lo indica la esfera de depuración.
‫Así que esto es genial.
‫Así que en este video creamos una función de fuego y la vinculamos al mapeo de acción de fuego.
‫Y para demostrar que funcionaba, dibujamos una esfera de depuración en el punto de generación del proyectil cada vez que hacemos clic
‫con el botón izquierdo del mouse para tener una función de disparo, estamos casi listos para comenzar a generar proyectiles.
‫Y también hemos colocado esta función en la clase base pong.
‫Así nuestra torre también puede usarlo.
‫Entonces, en el siguiente video, discutiremos cómo nuestra torre utilizará esta función.
‫Te veré pronto.