‫Hola.
‫Bienvenidos.
‫En esta lección, vamos a hacer que el capturador sea mucho más confiable.
‫Y también vamos a hacer posible soltar un componente agarrado para que podamos lanzarlo y, en general,
‫hacer que sea un poco más útil.
‫Vamos a sumergirnos y ver cómo se hace esto.
‫Ahora, la razón por la que a menudo no podemos captar esta gárgola es que los
‫componentes que simulan la física por motivos de rendimiento se pondrán en reposo cuando hayan estado inmóviles durante un cierto período de tiempo.
‫Y eso es lo que estamos viendo.
‫Esta simulación de física de gárgolas se va a dormir y no se despierta cuando la conectamos
‫con nuestro controlador de física.
‫Entonces, lo que debemos aprender a hacer es despertarlo cuando lo golpeamos con un trazo de esfera.
‫Ahora vamos a echar un vistazo a la documentación del componente primitivo que hemos visto.
‫El componente primitivo es lo que devuelve nuestro resultado de coincidencia, pero en realidad es un
‫componente primitivo.
‫Entonces dice aquí en la documentación que un componente primitivo es un componente de escena que contiene
‫o genera algún tipo de geometría y se representa o usa como datos de colisión.
‫Entonces, en términos generales, los componentes primitivos son los que pueden simular la física.
‫Así que podemos esperar encontrar algunos métodos de simulación física aquí.
‫Y lo que voy a buscar es una función con la palabra clave despertar.
‫Vamos a revisar algunas funciones hasta que encontremos una que diga Activar todos los cuerpos rígidos.
‫Los cuerpos rígidos son esencialmente un término físico para objetos que simulan la física.
‫Entonces puedes ver que tiene un vacío.
‫El tipo de retorno no toma ningún argumento.
‫Por lo tanto, deberíamos poder simplemente llamar a esto cuando intentemos adjuntarlo.
‫Entonces, si vamos a tomar un CP dentro de nuestra declaración if, hemos tocado este componente, estamos a punto de
‫tomarlo.
‫Lo primero que tenemos que hacer es crear una variable para almacenar este componente primitivo.
‫Así que tendremos un puntero de componente primitivo llamado conjunto de componentes de hit que es igual al componente de punto
‫de resultado de hit.
‫Y luego, usando ese puntero de componente de golpe, podemos activar con flecha todos los cuerpos rígidos y luego poner los paréntesis y el punto
‫y coma al final.
‫Entonces esto debería darle una patada a ese componente, despertarlo para que responda al controlador de física.
‫Ahora reemplacemos donde hemos hecho resultados exitosos.
‫No obtenga componentes en nuestra llamada de controlador de física para capturar la ubicación del componente porque ahora tenemos una
‫variable para eso y recompilaremos cuando haya terminado.
‫Sigamos adelante y presionemos reproducir y dejemos que la gárgola se siente un poco en el piso por ahora y dejemos que
‫se duerma y luego tratemos de levantarla.
‫Y notarás que no tenemos problemas para recogerlo, dejarlo en el suelo, lo que sea.
‫Va a estar bien y despertar esos cuerpos rígidos físicos y comenzar a simularlos para que puedan ser
‫levantados y agarrados.
‫Ahora, es posible que haya notado que actualmente no podemos liberar el controlador de
‫física, por lo que ese será su desafío para hacerlo en la función de lanzamiento.
‫Así que vas a llamar al componente de liberación en ese identificador de física.
‫Esa es una función que está disponible en el puntero del controlador de física.
‫Primero comprobará si tenemos un componente de captura.
‫Entonces, si obtiene un componente de captura que devuelve un puntero al componente de captura, esos puntos serán nulos
‫si el controlador de física no está capturando nada actualmente.
‫Entonces puede usar eso para verificar si tenemos algo y solo liberarlo si actualmente estamos tomando
‫algo.
‫Y como beneficio adicional, puede intentar ver si podemos establecer el objetivo nuevamente.
‫Solo si estamos agarrando algo, pero mira el video y pruébalo.
‫Bienvenido de nuevo.
‫Así que entremos a tomar una taza.
‫Voy a entrar en la función de lanzamiento y eliminar el registro de lanzamiento.
‫Y aquí vamos a poner una declaración if y vamos a decir si y ahora necesitamos
‫controlar nuestras manijas físicas.
‫Así que, en primer lugar, vamos a hacer un puntero de componente del controlador de física, al que
‫llamaremos controlador de física y lo igualaremos para obtener el controlador de física.
‫Entonces, vamos a decir que si el identificador de física es igual a un puntero nulo, queremos seguir adelante y regresar
‫porque no podremos hacer nada, liberar nada.
‫Si no tenemos un controlador de física en absoluto, entonces queremos verificar si actualmente nos estamos aferrando a algo con nuestro
‫controlador de física.
‫Entonces, si, digamos, si la flecha del controlador de física se agarra entre paréntesis del componente no es igual al puntero nulo, entonces dentro del cuerpo de esta
‫declaración if significa que tenemos algo actualmente agarrado, bueno, entonces vamos a hacer un
‫componente de liberación de flecha del controlador de física , que lo va a dejar pasar, como sugiere su
‫nombre.
‫Y una cosa que no hice en el código aquí, pero probablemente valga la pena agregarlo al suyo, es
‫que antes de lanzar el componente, vale la pena seguir adelante y llamar a los componentes agarrados y luego agregar los cuerpos rígidos
‫débiles tal como lo hicimos nosotros. antes de agarrar el componente.
‫Porque si hiciéramos crecer un componente y no nos moviéramos por un tiempo, también podría quedarse dormido.
‫Y así liberarlo no haría nada.
‫Por lo tanto, vale la pena agregarlo, ya que captaría ese caso de esquina y no queremos establecer la ubicación de destino
‫en tic si tenemos un controlador de física que actualmente no está capturando nada.
‫Así que aquí en nuestros componentes de ticks, vamos a poner una declaración if que será exactamente igual.
‫Va a decir que la flecha del controlador de física obtiene un componente agarrado que no es igual al puntero nulo.
‫Luego, en el cuerpo de la declaración if, vamos a poner el cálculo de la ubicación del objetivo y la configuración de
‫la ubicación del objetivo en ese controlador de física también.
‫Vamos a recompilar y probar esto.
‫Sigamos adelante y dale al play.
‫E intenta agarrar la gárgola.
‫Y luego, si suelto el ratón, vuelve a caer al suelo.
‫Entonces, parece no verse afectado por si está despierto o dormido.
‫Parece que lo estamos despertando sin importar si cada vez que lo estamos recogiendo, esencialmente.
‫Así que parece estar funcionando exactamente como me gustaría.
‫No se está atascando.
‫Se siente casi bien.
‫Lo único un poco extraño es que cuando me muevo hacia él, puedes ver que hace este extraño temblor
‫porque en realidad está chocando con el jugador.
‫Ahora podemos arreglar esto un poco yendo a nuestra gárgola en el panel de detalles, seleccionando todas las categorías,
‫desplazándonos hacia abajo hasta colisión y mirando nuestro ajuste preestablecido de colisión personalizado y hacia abajo en las
‫respuestas del objeto.
‫Veremos un poco más sobre esto más adelante.
‫Hay una respuesta de objeto peón.
‫Esto básicamente dice: ¿Debo colisionar con el peón o qué?
‫¿Cuál debería ser mi respuesta al peón?
‫Bueno, voy a configurarlo para que se superponga con el peón.
‫Y eso significa que si choca conmigo, esencialmente simplemente lo ignora.
‫Y luego, una cosa más que tenemos que hacer es porque esto en realidad se compone de dos mallas
‫estáticas, tienen sus propios ajustes de colisión.
‫Voy a bajar al montículo de tierra.
‫Esa es la cosa debajo de la gárgola.
‫Y aquí en realidad solo voy a simplificar las cosas.
‫Voy a hacer que el montículo de tierra se separe, que no haya colisiones.
‫Así que voy a cambiarlo al preajuste sin colisión.
‫Luego voy a seguir adelante y presionar play, agarrar la gárgola del suelo.
‫Y ahora pueden ver que cuando estoy corriendo con él, no hay ninguna
‫de esas fallas extrañas porque no está tratando de chocar con la malla de colisión del jugador.
‫Buena cosa.
‫En esta lección hemos aprendido cómo hacer que nuestro agarre sea mucho más confiable y también cómo podemos liberar
‫el componente de agarre.
‫Buena cosa.
‫Te veré en la próxima conferencia.