‫Hola y bienvenido.
‫En esta lección, agregaremos un nuevo componente al reproductor de
‫aplicaciones, el identificador de física, y aprenderemos cómo podemos apuntarlo en nuestro componente capturador.
‫También vamos a ver cómo podemos protegernos de chocar accidentalmente el motor.
‫Vamos a sumergirnos y ver cómo.
‫Ahora, para agarrar un objeto, necesitamos interactuar con el sistema físico.
‫Y en realidad hay un componente que podemos usar llamado control de física, que nos permite agarrar objetos físicos y decirles dónde
‫queremos estar en el mundo, pero hacerlo de tal manera que reconozca las limitaciones físicas para que
‫no lo haga. t atravesar paredes.
‫Y parece que el objeto está en un resorte en lugar de seguir rígidamente un punto específico al que le
‫decimos que vaya.
‫Así que vamos a usar estos componentes de control de física.
‫Vamos a agregarlo a nuestro reproductor, BP, junto con el capturador.
‫Así que vayamos al botón Agregar debajo del panel de componentes y busquemos el controlador de física y agreguemos.
‫Y pueden ver que es un componente de actor, no un componente de escena, porque desciende en
‫la sección inferior, por lo que en realidad no tiene una transformación física propia.
‫Lo que hacemos con el mango de física es decirle el objeto que debe agarrar y luego le decimos dónde
‫queremos que coloque el objeto que hemos agarrado.
‫Si va a la documentación, puede ver esto en las funciones que están disponibles.
‫Si se desplaza hacia abajo a la sección de funciones, puede ver que hay un componente de liberación y un componente de captura
‫en la función de ubicación.
‫También hay una ubicación de destino establecida y una rotación.
‫Aquí es donde quiere intentar poner el objeto, pero obviamente respetará cualquier restricción física al
‫hacerlo y lo hará de manera suave como si estuviera en un resorte.
‫Ahora, no vamos a usar estas funciones todavía, pero necesitamos encontrar una manera de obtener
‫este componente en nuestro componente capturador.
‫¿Entonces cómo hacemos eso?
‫Bueno, pasemos a agarrar una C. P y echa un vistazo a un gran juego e intenta conseguirlo.
‫Ahora hay una función en cualquier actor que nos permite encontrar un componente por su tipo.
‫Pero, ¿cuál es el tipo de mango físico?
‫Bueno, es un componente de manejo de física que se apodera de este tipo que necesitamos usar e incluir y puede ver que la
‫inclusión en la documentación es el componente de manejo de física de barra inclinada del motor de física.
‫Así que copiemos eso en un CP capturador y agreguemos debajo de agregar ayudantes de depuración de dibujo.
‫Luego, lo que vamos a hacer es obtener ONA para obtener nuestro acto de
‫propiedad, un puntero luego a una flecha y un componente de búsqueda genial por clase.
‫Ahora bien, esta función es un tipo especial de función llamada función de plantilla en C++,
‫y esto significa que puede pasarle algunos parámetros que realmente se evalúan cuando compila.
‫Y la forma de hacerlo es usando paréntesis angulares como este.
‫Así que usas un paréntesis angular después de la función y le das el tipo que quieres
‫que encuentre, que en nuestro caso es el componente que manejas física como tal.
‫Y luego cierras los paréntesis angulares.
‫Pero debido a que es una función, también debe llamarla usando paréntesis regulares.
‫Entonces pones el segundo grupo de paréntesis después de esto.
‫Entonces puede ver que estos argumentos de tiempo de compilación se pasan usando los corchetes angulares y luego los
‫de tiempo de ejecución se pasan usando los paréntesis.
‫Ahora, como una función regular, esto tendrá un valor de retorno y en este caso el valor de retorno
‫será cualquier tipo que hayamos pasado aquí.
‫Pero como un puntero, podemos tomar un puntero de componente de control de física y crear una variable
‫para eso que llamaremos control de física y establecerlo igual a este componente de búsqueda de propietario por clase.
‫Ahora recordemos un punto y coma al final de esta línea y eso es todo lo
‫que se requiere para que consigamos otro componente en nuestro mismo actor.
‫Ahora recuerde que le dije que los punteros pueden ser peligrosos porque a veces pueden ser nulos y
‫eso puede provocar un bloqueo.
‫Así que imagina que nos olvidamos de poner un componente de manejo de física en nuestro actor, o hemos puesto un capturador en un nuevo actor
‫y aún no lo hemos conectado con un componente de manejo de física.
‫Si este es el caso, entonces el puntero del controlador de física será un puntero nulo.
‫Y si tratamos de usar el operador de flecha o el operador de referencia en ese puntero, colapsará
‫nuestro motor.
‫Y a veces puede ser muy difícil ver cómo se ve ese bloqueo.
‫Así que voy a seguir adelante y causar este bloqueo solo para mostrarte y es posible que puedas
‫reconocerlo si te sucede en el futuro. Voy a reasignar nuestro puntero de manejo de física
‫igual al puntero nulo. .
‫Palabra clave especial.
‫Es todo.
‫No, Pedro.
‫Así es como deletreó el puntero NULL en C++.
‫Luego pones un punto y coma al final.
‫Y luego, lo que podemos hacer es física, manejar la flecha, obtener un nombre así.
‫Y si seguimos adelante y compilamos usando codificación en vivo y cuando termine de compilar, seguiremos adelante
‫y nos aseguraremos, en primer lugar, de guardar todo lo que tenemos aquí en IBP plex y a punto
‫de colapsar. el motor.
‫Y si sigo adelante y presiono reproducir, este es el resultado de que obtendremos un bloqueo.
‫Reportero Y puede sentirse tentado a pensar cuando vea esto que algo salió mal con irreal, pero en realidad
‫es su código el que tiene la culpa aquí.
‫Puede ver que en este informe de bloqueo, la primera línea dice que el problema proviene de que toma dos puntos, dos
‫puntos y comienza a jugar.
‫Y en realidad también nos da el número de línea, que es la línea 28.
‫Entonces puede ver que en este punto de la línea 28, cuando hacemos referencia a ese puntero,
‫para llamar a una función en él, en realidad cometimos un grave error al no verificar primero si ese puntero era
‫nulo.
‫Así que eso es lo que tenemos que hacer.
‫Y lo hacemos con una sentencia if.
‫Básicamente, decimos que si el identificador de física no es igual al puntero nulo, entonces podemos seguir adelante y llamar cosas en ese identificador de física para que podamos poner el identificador de física,
‫obtener el nombre dentro de esta declaración if y eso nos protege porque ese código, que
‫el el código de referencia no se ejecutará en el caso de que tengamos un
‫puntero nulo.
‫Así que voy a seguir adelante y eliminar la línea 27 ahora donde la estamos configurando sin puntero y voy
‫a desafiarte a que imprimas el nombre del componente por ti mismo.
‫Entonces, solo imprima si tenemos el componente real, básicamente no tenemos un puntero nulo y usamos otro para advertir si
‫no logramos obtener ese componente e intentamos eliminar el componente para verificar, pausar el video
‫y tener atrás.
‫Bueno.
‫Bienvenido de nuevo.
‫Así que vamos a crear un nuevo mensaje de registro aquí y vamos a decir tiene un identificador de física, porcentajes de dos puntos
‫y tenemos este nombre de identificador de física.
‫Así que solo voy a cortar y pegar como segundo o cuarto argumento en el registro U.
‫Y le voy a poner una estrella porque es una cuerda.
‫Ahora agreguemos una declaración alt debajo de nuestras declaraciones if.
‫Y aquí vamos a poner otro registro anual, que será esta vez en
‫lugar de una pantalla, vamos a poner un mensaje de advertencia que aparecerá en amarillo y vamos
‫a decir que no. identificador de física encontrado, signo de exclamación.
‫Ahora, no tengo el editor abierto.
‫Así que voy a hacer un cambio de control B para compilar dentro del código de Visual Studio, cerrar la
‫terminal cuando tenga éxito y reiniciar desde el nuevo proyecto.
‫Una vez que se haya iniciado, sigamos adelante y presionemos reproducir, abramos el registro de salida y deberíamos ver el mensaje de
‫registro.
‫A tiene un manejo de la física.
‫¿Qué nombre el nombre es manejar física familiar.
‫Ahora, ¿qué pasaría si fuéramos a nuestro reproductor de pitidos y realmente elimináramos ese controlador de física y siguiéramos
‫adelante y jugáramos?
‫Ahora eche un vistazo a nuestro registro de salida y verá que tenemos una advertencia amarilla que indica que no se encontró ningún identificador
‫de física.
‫Así que dejemos de jugar.
‫Sigamos adelante y volvamos a agregar el identificador de física porque lo vamos a querer y salvaremos al jugador.
‫Gran cosa de BP.
‫Entonces, descubrimos cómo podemos obtener otros componentes desde dentro de un componente y aprendimos cómo lidiar
‫con un valor nulo.
‫Un punto es y por qué debemos tener cuidado.
‫Te veré en la próxima conferencia.