Compartir vía


Guía del programador de física de malla

Sugerencias generales

Puede empezar con el examen de los documentos de física de Unity. Hay muchos recursos disponibles sobre cómo optimizar la física en Unity.

La física de malla viene con algunos desafíos adicionales. Estos son algunos consejos para ayudar a superarlos.

  • Hacer paredes gruesas: la sincronización de red podría mover cuerpos rígidos ligeramente. Como resultado, verá una penetración adicional entre objetos. Los cuerpos dinámicos pequeños podrían ser empujados a través de paredes delgadas. Para objetos y paredes más gruesos, estos efectos de tunelización son menos probables. Si es posible, utilice casco convexa o un pequeño conjunto de cascos convexas para cuerpos dinámicos.

  • Siempre que sea posible, use piezas convexas gruesas para geometría estática. Intente evitar mallas, especialmente mallas muy densas.

  • Masas realistas en kg: el contenido de varios orígenes podría interactuar en la misma escena. Esto funciona bien si las relaciones de masa entre los objetos son razonables. Un buen punto de partida es asignar masas realistas a cuerpos usando kg.

Desarrollar contenido mejorado de la física de malla

Animaciones de reproducción automática

Puedes agregar animaciones de reproducción automática a la escena que interactúan con cuerpos físicos. Esas animaciones se sincronizan automáticamente entre los clientes ajustando temporalmente su velocidad de reproducción (ralentizarlas o acelerandolas) en cada cliente hasta que todos los clientes estén en el mismo estado de animación al mismo tiempo.

Configuración

  • Reproducir automáticamente habilitado.
  • Animar física recomendada (pero no necesaria) si la animación afecta a los colisionadores que interactúan con cuerpos físicos.
  • Selección de tipo establecido en "Always Animate" (aplicado automáticamente por la física de malla) porque la animación podría afectar a los cuerpos físicos incluso cuando están fuera de pantalla.

Captura de pantalla de la configuración del componente de animación en el Inspector.

El clip de animación usado por la animación de reproducción automática puede usar cualquier modo de ajuste. Las opciones útiles son "Loop" y "Ping Pong".

Captura de pantalla de la configuración del recurso Clip de animación en el Inspector.

Componentes

Agregar uno de los siguientes MonoBehaviour componentes a un objeto agregará el comportamiento específico a este objeto.

Cuerpo pegajoso

Hace que los cuerpos se peguen a otros cuerpos. Podría usarse para lanzar dardos en otros cuerpos o para adjuntar una imagen en una pared. Esto se implementa mediante la creación de una restricción fija entre los dos cuerpos implicados. Nota: Esta operación se realiza en todos los clientes y, por tanto, se implementa como un mensaje de red especial.

Captura de pantalla de las opciones de script cuerpo pegajoso en el Inspector.

Configuración

  • Stick: define si el cuerpo se pegará a cuerpos estáticos o dinámicos.
  • Cuándo: A veces quieres pegar un cuerpo rápido cuando simplemente toca otro cuerpo, y a veces quieres pegar un cuerpo cuando se mantiene en otro cuerpo durante un tiempo determinado, como esperar a que el pegamento se endurezca cuando pegas un botón en una pared.
  • Control de colisión Para deshabilitar colisiones específicas entre un cuerpo y otro. Normalmente, se pueden usar capas de colisión o deben usarse. Sin embargo, dado que solo hay 32 capas de colisión codificadas de forma rígida en Microsoft Mesh, es posible que no sea una opción. Aquí puede deshabilitar cuerpos específicos.
  • Cuerpos afectados Para filtro cuerpo de colisión aplicado para el control de colisión.

Campo de contención

Garantiza que los cuerpos rígidos permanezcan dentro de los límites de uno o varios colisionadores de desencadenadores.

Captura de pantalla de las opciones del script campo de contención en el Inspector.

Para que este componente funcione, debe asociarse a uno o varios colisionadores de desencadenadores. (Estos colisionadores de desencadenadores también se pueden anidar en la jerarquía de transformación debajo del GameObject que tiene asociado este componente).

Los cuerpos rígidos afectados por este componente ya deben estar dentro de los límites de sus colisionadores desencadenadores (el "volumen de desencadenador") cuando se inicia la escena. El centro de masa de cada uno de estos cuerpos rígidos se restringirá entonces para permanecer dentro de los límites del volumen del desencadenador, no será posible extraer o mover de otro modo los centros de masa de estos cuerpos rígidos fuera.

Configuración:

  • La desviación máxima de la contención permite que el centro de masa de un cuerpo rígido afectado vaya ligeramente fuera de los volúmenes del desencadenador antes de que se vuelva a ajustar. Se trata de una compensación de optimización del rendimiento: si la desviación máxima permitida es grande, el cuerpo podría dejar visiblemente el volumen del desencadenador y volver a ajustar, pero el código puede evitar tener que comprobar y comprobar la posición del cuerpo con mucha frecuencia cuando descansa o se mueve lentamente dentro del volumen del desencadenador.

  • Los cuerpos afectados definen condiciones de filtrado opcionales para los cuerpos afectados por este componente. (De forma predeterminada, todos los cuerpos se ven afectados).

Campo vector de velocidad

Permite acelerar o ralentizar un cuerpo rígido hasta que alcanza una velocidad de destino específica.

Captura de pantalla de las opciones de script Campo de velocidad direccional en inspector.

Este componente controla la magnitud y la dirección de la velocidad. Consulte Campo de magnitud de velocidad para controlar solo la magnitud y el campo de dirección de velocidad para controlar solo la dirección. Hay dos modos de funcionamiento:

  • Si está unido a un cuerpo rígido, este cuerpo rígido se controlará.
  • Si está unido a un colisionador de desencadenador, todos los cuerpos rígidos que entran en este volumen de desencadenador se verán afectados.

Configuración:

  • El tipo de velocidad define si estamos trabajando en velocidad lineal o angular.
  • La dirección del espacio local define si se especifica la velocidad de destino en el espacio local del objeto al que está asociado el componente.
  • Velocidad de destino establece el vector de velocidad deseado en metros/segundo (o radianes/segundo en caso de velocidad angular).
  • La aceleración máxima define la aceleración máxima aplicada para alcanzar la velocidad de destino.
  • Tipo de aceleración define un tipo de aceleración para alcanzar una velocidad de destino.
    • Instantánea alcanzará la velocidad de destino inmediatamente (igual que la aceleración constante con aceleración máxima = infinito).
    • La aceleración constante garantizará que el cuerpo alcance la velocidad de destino independientemente de lo que esté dentro de los límites de la configuración aceleración máxima.
    • Smooth Approach reduce la aceleración más cerca de llegar a la velocidad de destino. Esto significa que, en la práctica, nunca alcanzará la velocidad de destino. Además, si hay alguna influencia externa, como subir o bajar, esta influencia adicional no se invalidará completamente, lo que da lugar a una bajada más rápida que a la bajada.
  • Los cuerpos afectados definen condiciones de filtrado opcionales para los cuerpos afectados por este componente. (De forma predeterminada, todos los cuerpos se ven afectados).

Campo de gravedad escalado

Cambia cómo afecta la gravedad a los cuerpos rígidos dentro de los límites de uno o varios colisionadores de desencadenadores.

Captura de pantalla de las opciones de script campo antigravity en el Inspector.

Para que este componente funcione, debe asociarse a uno o varios colisionadores de desencadenadores. (Estos colisionadores de desencadenadores también se pueden anidar en la jerarquía de transformación debajo del GameObject que tiene asociado este componente).

Los cuerpos rígidos que tocan o superponen los colisionadores del desencadenador (el "volumen del desencadenador") se comportan según la configuración de gravedad de este componente en lugar de la gravedad física global. Se omiten los cuerpos rígidos que tienen la gravedad de uso deshabilitada.

Hay una relación interesante entre la percepción del tamaño del jugador en el mundo y la gravedad:

  • Si la gravedad es menor que lo que estamos acostumbrados a (los objetos son más lentos cuando caen), el jugador percibe que es más grande, como un gigante.
  • Si la gravedad es mayor que lo que estamos acostumbrados a (los objetos son más rápidos cuando caen), el jugador percibe que es más pequeño, como un mouse.

Configuración:

  • El valor preestablecido de gravedad permite seleccionar varios valores preestablecidos interesantes y útiles para la propiedad Escala de gravedad: varios cuerpos celestiales (Luna, Marte, Tierra, Júpiter), sin gravedad (Espacio exterior) o gravedad invertida (Upside Down). Siempre puede sobrescribir la escala de gravedad con cualquier valor que desee.
  • La escala de gravedad establece la gravedad local dentro del volumen del desencadenador en relación con la gravedad física predeterminada que afecta a la escena. La escala de gravedad predeterminada de 1 deja la gravedad sin verse afectada; los valores más grandes aumentan la gravedad; 0 quita la gravedad; los valores negativos cambian la dirección de la gravedad.
  • Los cuerpos afectados definen condiciones de filtrado opcionales para los cuerpos afectados por este componente. (De forma predeterminada, todos los cuerpos se ven afectados).

Campo de gravedad orbital

Simula la gravedad de un "planeta toy" en tu escena.

Captura de pantalla de las opciones del script Campo de gravedad en el Inspector.

Para que este componente funcione, debe asociarse a uno o varios colisionadores de desencadenadores. (Estos colisionadores de desencadenadores también se pueden anidar en la jerarquía de transformación debajo del GameObject que tiene asociado este componente).

Cualquier cuerpo rígido que toque o superponga los colisionadores desencadenadores (el "volumen del desencadenador") se extrae hacia la posición del objeto que tiene este componente adjunto.

Configuración:

  • La gravedad define la magnitud de la gravedad. Esta es la aceleración del cuerpo en órbita (la "luna") hacia el cuerpo central a una distancia de un metro. Dado que la velocidad orbital es sqrt(gravedad/radio), este valor describe la velocidad² de una luna en una órbita estable en un radio de un metro.

  • Deshabilitar la gravedad global deshabilita la configuración de gravedad física global de la escena para los cuerpos afectados por este componente. De forma predeterminada, la gravedad de la escena global seguirá afectando a tu planeta y sus lunas.

  • Los cuerpos afectados definen condiciones de filtrado opcionales para los cuerpos que pueden convertirse en lunas en este campo de gravedad.

  • Forzar lunas en órbita circular es una trampa que aplica algunas fuerzas suaves para empujar la luna a una órbita circular. La motivación es que es difícil que un no experto establezca la gravedad y la velocidad inicial de los cuerpos de una manera de lograr una órbita circular. Además, si esta opción está habilitada, las lunas que se colocan dentro del campo de gravedad en el Editor de Unity comienzan automáticamente a orbitar su cuerpo central cuando se carga la escena.

  • Fuerza de órbita forzada escala la aceleración aplicada para forzar la luna a una órbita circular.

  • Establecer radio forzado Donde colocado hace que las lunas que se colocan dentro del campo de gravedad en el Editor de Unity adopten automáticamente su distancia inicial desde el cuerpo central como su órbita preferida.

  • Set Forced Radius Where Dropped hace que las lunas que se agarran de forma interactiva y se mueven al campo de gravedad adopten automáticamente la distancia desde el cuerpo central en el que se descartaron como su órbita preferida.

  • El radio de fuerza predeterminado define el radio predeterminado para la referencia rápida anterior que se usa a menos que se invalide por cualquiera de las otras opciones.

Campo de flotabilidad

Simula la flotabilidad de cuerpos rígidos arbitrarios en el agua: los cuerpos parecen flotar en el volumen de desencadenador conectado.

Captura de pantalla de las opciones de script de campo de flotabilidad en el Inspector.

Para que este componente funcione, debe asociarse a uno o varios colisionadores de desencadenadores. (Estos colisionadores de desencadenadores también se pueden anidar en la jerarquía de transformación debajo del GameObject que tiene asociado este componente).

Los cuerpos rígidos que tocan o superponen los colisionadores desencadenadores (el "volumen del desencadenador") experimentan fuerzas de flotabilidad (upthrust) para mantenerlos a flote.

Este componente usa la forma de los colisionadores de rigidbody para calcular su densidad (en otras palabras, volumen dividido por masa), flotabilidad, arrastre y fricción.

Colisionadores de flotabilidad

Ventaja: Rendimiento. El costo de proceso de los cálculos de flotabilidad se escala linealmente con el número de vértices colisionador. Los colisionadores físicos típicos para cuerpos, incluso si ya se han simplificado, suelen ser significativamente más complejos (en términos de número de vértices) de los que se requiere para que la flotabilidad funcione lo suficiente.

Cómo usar: Agregue uno (o varios) colisionadores adicionales (se pueden deshabilitar) a un cuerpo. Marque los colisionadores como cascos de flotabilidad explícitos mediante la asignación de un material físico denominado BuoyancyHull (¡importa la ortografía exacta!) a ellos. Los detalles de configuración de este material físico no importan: se suministra un material físico adecuado con el paquete mesh toolkit. Si un cuerpo tiene colisionadores marcados como así, solo estos colisionadores se utilizan para cálculos de flotabilidad; todos los demás colisionadores se omiten.

Procedimientos recomendados: colisionadores explícitos de casco de flotabilidad a cualquier rigidbody que pueda ser lanzado en un Campo de flotabilidad. Es mejor (y más fácil) usar colisionadores de cubo porque tienen los vértices más pequeños (ocho por colisionador). La coincidencia de la forma visual exacta del cuerpo flotante normalmente no es necesaria para un buen resultado; Una aproximación muy gruesa suele ser suficiente.

Configuración:

  • La densidad es la densidad del líquido simulado que "llena" el volumen del desencadenador en kilogramos por medidor cúbico. (El valor predeterminado representa la densidad aproximada del agua a temperatura ambiente).
  • Surface Type especifica cómo muestra el componente la forma de la superficie del agua para calcular las fuerzas de flotabilidad.
    • Static Flat supone que la superficie del agua es perfectamente planar y nunca se mueve desde su posición inicial en la escena. La posición y la orientación de la superficie del agua se determinan una sola vez, cuando se inicia la escena. Esta es la opción computacionalmente más barata.
    • Plano dinámico supone que la superficie del agua es perfectamente planar, pero permite que se mueva (por ejemplo, el nivel de agua puede subir o receptor). La posición y la orientación de la superficie del agua se determinan una vez por marco.
    • El plano dinámico por cuerpo admite una superficie de agua que no es planar (por ejemplo, puede ser ondulada). Para cada cuerpo rígido flotante en la superficie del agua, se determina una aproximación plana local de la superficie del agua debajo de la estructura rígida una vez por marco, que luego se usa para calcular las fuerzas de flotabilidad para este cuerpo rígido.
  • Los cuerpos afectados definen condiciones de filtrado opcionales para los cuerpos que pueden flotar en este campo de flotabilidad. (De forma predeterminada, todos los cuerpos son aptos).
  • Arrastre la resistencia al movimiento de los controles mientras el cuerpo rígido golpea el agua (es decir, la fricción ortogonal a la superficie del cuerpo).
  • La resistencia al movimiento de los controles de fricción de la piel a medida que el cuerpo rígido se mueve a través del agua (es decir, fricción paralela a la superficie del cuerpo).

Importante: Para permitir que el componente acceda a los triángulos de malla del colisionador de un cuerpo rígido, la casilla "Lectura y escritura habilitada" debe estar activada en la configuración de importación de la malla colisionadora. De lo contrario, el cuerpo será ignorado por el campo de flotabilidad y caerá a través del campo sin verse afectado por él.

Importante: Asegúrese de que sus cuerpos físicos tienen masas creíbles para asegurarse de que se comportan según lo previsto en un campo de flotabilidad:

  • Si la masa de un cuerpo rígido es implausiblemente alta en comparación con su volumen, se hundirá en la parte inferior.
  • Si la masa de un cuerpo rígido es implausibly baja en comparación con su volumen (por ejemplo, el valor predeterminado de Unity Rigidbody de una unidad de masa), simplemente se sentará encima del líquido simulado.

De forma predeterminada, el campo de flotabilidad muestra la superficie del volumen del desencadenador para determinar la forma de la superficie del agua (sujeto a la configuración de tipo de superficie de agua elegida). Las superficies animadas en memoria de CPU se pueden muestrear de esa manera, pero las superficies animadas por un sombreador de vértices de GPU no son visibles para el script en tiempo de ejecución. El BuoyancyField componente proporciona un delegado de devolución de llamada accesible para scripts denominado GetDistanceFromSurface que permite a los scripts externos proporcionar información sobre una forma de superficie de agua animada por GPU.

Consulte el BuoyancyFieldWaves componente siguiente para obtener una superficie de agua ondulada con un enfoque sin código.

Ondas de campo de flotabilidad

Complemento al BuoyancyField componente que funciona con un sombreador BuoyancyFieldWaves_VertexPosition de vértices específico (disponible tanto como un gráfico de subsmbreador como un archivo de inclusión de HLSL). Esto crea el efecto visual de una superficie de agua ondulada junto con el comportamiento correspondiente de los objetos flotantes en la superficie del agua.

Captura de pantalla de las opciones de script de ondas de campo de flotación en el Inspector.

Este componente debe agregarse a un GameObject que ya tenga un BuoyancyField componente agregado.

La superficie de agua que se va a animar debe suministrarse como una malla plana y tesselada cuyos límites son de la forma deseada de la superficie del agua cuando se ven desde la parte superior hacia abajo. El material utilizado para la superficie del agua debe usar un sombreador que incorpore el BuoyancyFieldWaves_VertexPosition sub sombreador para determinar las posiciones de vértices de la malla. Puede usar el material de ejemplo BasicWavyWaterSurface incluido (y el gráfico de sombreador con el mismo nombre) que un punto de partida para sus propios desarrollos de sombreador.

Configuración:

  • Waves Mesh Renderer hace referencia al MeshRenderer componente que representa la malla de superficie de agua.
    • El material muestra qué material utiliza el representador. Se indica únicamente con fines informativos.
    • El sombreador muestra qué sombreador usa el material. Se indica únicamente con fines informativos.
  • Los nombres de propiedad del sombreador de ondas definen los nombres de las propiedades de sombreador necesarias que el sombreador debe exponer. Este componente accede a estas propiedades en tiempo de ejecución para asegurarse de que el comportamiento del campo de flotabilidad permanece sincronizado con los objetos visuales de la superficie de agua en todos los clientes.
    • Tiempo controlado por script es el nombre de una propiedad de sombreador de tipo expuesta floatque este componente actualizará continuamente cada fotograma con un tiempo constantemente creciente (medido en segundos) que se sincroniza en todos los clientes. El BuoyancyFieldWaves_VertexPosition sub sombreador usa este tiempo compartido para crear un patrón de onda que permanece sincronizado en todos los clientes y sincronizado con el comportamiento del campo de flotabilidad.
    • Wave Speed es el nombre de una propiedad de sombreador de tipo expuesta floatque determina la velocidad base a la que las ondas se propagan horizontalmente. El propio valor de propiedad debe establecerse en el material aplicado a la malla de superficie de onda. Establecer esto en cero hace que la superficie de onda se convierta en estática y desenmoving.
    • Wave Length es el nombre de una propiedad de sombreador de tipo expuesta floatque determina la gravedad general del patrón de onda. El propio valor de propiedad debe establecerse en el material aplicado a la malla de superficie de onda. Los valores más pequeños producen ondas cortas; los valores más grandes producen ondas largas y barridas.
    • Wave Height es el nombre de una propiedad sombreadora de tipo expuesta floatque determina el alto base de las ondas. El propio valor de propiedad debe establecerse en el material aplicado a la malla de superficie de onda. Si se establece en cero, la superficie de onda se vuelve completamente plana.

El gráfico de sombreador de muestra incluido BasicWavyWaterSurface (usado por el material con el mismo nombre) usa el sub sombreador de vértices necesario BuoyancyFieldWaves_VertexPosition para producir la superficie ondulada 3D, pero solo incluye una implementación de soporte mínimo para el sombreador de fragmentos, lo que hace que represente la superficie como una malla semitransparente y sin formato.

Captura de pantalla del gráfico básico del sombreador de superficie de agua ondulada en el Editor de gráficos de sombreador.

Puedes personalizar la ruta de acceso fragmento de un sombreador utilizado con el BuoyancyFieldWaves componente completamente a tu gusto. Sin embargo, es esencial que la ruta de acceso de vértice del sombreador use el BuoyancyFieldWaves_VertexPosition gráfico del sombreador secundario y que exponga las cuatro entradas a este gráfico de sub sombreador como floatpropiedades de sombreador de tipo del gráfico de sombreador general para que el componente pueda acceder a ellos en tiempo de ejecución. Si el sombreador no puede incluir el gráfico de subinformador necesario o si alguna de las propiedades de sombreador necesarias no se expone, el inspector del componente mostrará un mensaje de error en tiempo de diseño y la flotabilidad no funcionarán en tiempo de ejecución:

Captura de pantalla de las opciones de script de ondas de campo de flotación que muestran el mensaje de error: sub sombreador de vértices requerido no en uso.

Captura de pantalla de las opciones de script de ondas de campo de flotación que muestran el mensaje de error: propiedad Shader no expuesta por material.

BasicWavyWaterSurface El gráfico de sombreador de ejemplo puede servir como un soporte técnico durante el desarrollo de contenido y como punto de partida para sus propios desarrollos de sombreador. Como alternativa, puede tomar un sombreador de superficie de agua existente, mantener su ruta de acceso fragmento y reemplazar solo su ruta de vértice .

Velocidad máxima de Angular

Invalida la velocidad angular máxima predeterminada de un cuerpo físico.

Captura de pantalla de las opciones de script Max Angular Velocity en inspector.

El motor físico no permitirá que el cuerpo rígido supere esta velocidad angular. Esto puede ser útil para limitar la velocidad de rodadura de un cuerpo rígido determinado o para permitirle rodar más rápido que el valor predeterminado de la física, que es 50 radianes por segundo (aproximadamente 8 revoluciónes por segundo).

La velocidad angular máxima debe especificarse en radianes por segundo. El valor especificado también se muestra en grados por segundo (180 grados ≈ 3,14 radianes) y las revoluciónes por segundo (1 revolución = 360 grados ≈ 6,28 radianes).

Campo de magnitud de velocidad

Permite la aceleración y la desaceleración de un cuerpo rígido hasta que alcanza una velocidad que está dentro de un intervalo permitido.

Captura de pantalla de las opciones de script De campo de velocidad en inspector.

Este componente controla la magnitud de la velocidad y mantiene la dirección actual. Si el objeto sigue siendo, elige una dirección aleatoria durante la duración de un fotograma. Hay dos modos de funcionamiento:

  • Si está unido a un cuerpo rígido, este cuerpo rígido se controlará.
  • Si está unido a un colisionador de desencadenador, todos los cuerpos rígidos que entran en este volumen de desencadenador se verán afectados.

Configuración:

  • El tipo de velocidad define si estamos trabajando en velocidad lineal o angular.
  • Límites de velocidad establece los límites deseados de velocidad mínima y máxima en metros/segundo (o radianes/segundo en caso de velocidad angular). Si la velocidad actual está por debajo del mínimo, se acelerará, si es más que el máximo, se ralentizará el cuerpo. Si la velocidad actual ya está dentro de los límites, el script no tiene ningún efecto. Para establecer una velocidad de destino específica, establezca el valor mínimo y máximo en el mismo valor.
  • La aceleración máxima define la aceleración máxima aplicada para alcanzar la velocidad de destino.
  • Tipo de aceleración define un tipo de aceleración para alcanzar una velocidad de destino.
    • Instantánea alcanzará el límite de velocidad inmediatamente (igual que la aceleración constante con aceleración máxima = infinito).
    • La aceleración constante garantizará que el cuerpo alcance la velocidad de destino independientemente de lo que esté dentro de los límites de la configuración aceleración máxima.
    • Smooth Approach reduce la aceleración más cerca de llegar a la velocidad de destino. Esto significa que, en la práctica, nunca alcanzará la velocidad de destino. Además, si hay alguna influencia externa, como subir o bajar, esta influencia adicional no se invalidará completamente, lo que da lugar a una bajada más rápida que a la bajada.
  • Los cuerpos afectados definen condiciones de filtrado opcionales para los cuerpos afectados por este componente. (De forma predeterminada, todos los cuerpos se ven afectados).

Alinear campo

Alinea el cuerpo con el eje especificado.

Captura de pantalla de las opciones de script Alinear campo en el Inspector.

Este componente agrega par al cuerpo para alinearlo con una dirección específica. Tenga en cuenta que el par siempre se aplica en la dirección que gira el cuerpo hacia el destino. Hay dos modos de funcionamiento:

  • Si está unido a un cuerpo rígido, este cuerpo rígido se alineará.
  • Si está unido a un colisionador de desencadenador, todos los cuerpos rígidos que entran en este volumen de desencadenador se alinearán.

Configuración:

  • Eje rigidbody establece el eje del cuerpo rígido afectado que se va a alinear con el destino.
  • El modo de alineación proporciona diferentes modos para especificar la alineación de destino:
    • En Espacio global para especificar la alineación de destino en el espacio global.
    • En Espacio local para especificar la alineación de destino en el espacio local (solo tiene sentido con el volumen del desencadenador).
    • Dirección de la velocidad para alinear el cuerpo con su velocidad lineal.
    • Hacia Game Object para alinear el cuerpo hacia un objeto de juego de destino.
  • Alineación de destino establece la dirección de destino de la alineación. (Solo cuando El modo de alineación se establece en En espacio global o en espacio local).
  • Target Game Object establece la dirección de destino de la alineación. (Solo cuando El modo de alineación se establece en Hacia el objeto game).
  • El multiplicador de par escala el par aplicado para alcanzar la alineación del objetivo; un multiplicador más alto gira el cuerpo más rápido (entre 1 y 1000).
  • Coeficiente de amortiguación establece el factor de amortiguación (entre 0 y 5). Cuando se establece por debajo de 1, el cuerpo puede oscilar alrededor de la orientación objetivo.

Campo de dirección de velocidad

Permite dirigir un cuerpo rígido hasta que la velocidad alcanza una dirección de destino.

Captura de pantalla de las opciones del script Campo de dirección de velocidad en el Inspector.

Este componente controla solo la dirección de la velocidad y mantiene la velocidad actual. Hay dos modos de funcionamiento:

  • Si está unido a un cuerpo rígido, este cuerpo rígido se controlará.
  • Si está unido a un colisionador de desencadenador, todos los cuerpos rígidos que entran en este volumen de desencadenador se verán afectados.

Configuración:

  • El tipo de velocidad define si estamos trabajando en velocidad lineal o angular.
  • Seguir objeto game define si el destino es una dirección predefinida o una dirección hacia un GameObject específico. Solo funciona para la velocidad lineal.
  • Cuerpo de destino (si Seguir objeto de juego se establece en true): establece la dirección de seguimiento deseada.
  • Dirección de destino establece la dirección deseada. Este valor se normaliza, por lo que la magnitud no tiene ningún efecto.
  • Direction In Local Space define si la dirección se especifica en una transformación local de la explosión.
  • La aceleración máxima define la aceleración máxima aplicada para alcanzar la velocidad de destino.
  • Tipo de aceleración define un tipo de aceleración para alcanzar una velocidad de destino.
    • Instantánea alcanzará la dirección de destino inmediatamente (igual que la aceleración constante con aceleración máxima = infinito).
    • La aceleración constante garantizará que el cuerpo alcance la velocidad de destino independientemente de lo que esté dentro de los límites de la configuración aceleración máxima.
    • Smooth Approach reduce la aceleración más cerca de llegar a la velocidad de destino. Esto significa que, en la práctica, nunca alcanzará la velocidad de destino. Además, si hay alguna influencia externa, como subir o bajar, esta influencia adicional no se invalidará completamente, lo que da lugar a una bajada más rápida que a la bajada.
  • Los cuerpos afectados definen condiciones de filtrado opcionales para los cuerpos afectados por este componente. (De forma predeterminada, todos los cuerpos se ven afectados).

Cuerpo magnético

Da al cuerpo una propiedad magnética que atrae o rechaza otros cuerpos.

Captura de pantalla de las opciones de script cuerpo magnético en el Inspector.

Para que este componente funcione, debe adjuntarse a uno o varios colisionadores. (Estos colisionadores también se pueden anidar en la jerarquía de transformación debajo del GameObject que tiene asociado este componente). Cada colisionador muestra una fuerza en otros elementos rígidos que están lo suficientemente cerca de este colisionador.

Configuración:

  • La fuerza define la aceleración del imán en el punto de contacto (cuando la distancia entre colisionadores es cero).
  • Distancia de influencia controla el rango de la fuerza magnética. La fuerza magnética solo se aplica si la distancia más corta entre los colisionadores es menor.
  • Tipo de campo define cómo se debilita la fuerza magnética con la distancia.
    • Constante supone que la fuerza magnética es la misma independientemente de la distancia.
    • Lineal supone que la fuerza magnética cae linealmente de Fuerza a cero (a la distancia de influencia).
    • Inverso supone una dependencia inversamente proporcional a la distancia.
    • Inverse Squared supone una dependencia inversamente proporcional a la distancia cuadrada (similar a un imán real).
  • El polo magnético controla qué objetos se ven atraídos o rechazados por este objeto.
    • El polo norte atrae al polo sur y rechaza el polo norte.
    • El Polo Sur atrae al polo norte y rechaza el polo sur.
    • Magnético atrae tanto polo sur como polo norte.
  • Deshabilitar la gravedad al contacto: si esto está habilitado y la fuerza del imán es dos veces mayor que la gravedad, la gravedad está deshabilitada para los cuerpos que están en contacto con este imán. Uno de los objetos debe ser estático para que esto tenga un efecto. Esto se usa a menudo para evitar el deslizamiento de cuerpos hacia abajo de una pared.

Explosión esférica

Crea una explosión que hace que todos los cuerpos dentro de un radio específico se muevan hacia afuera.

Captura de pantalla de las opciones del script de explosión esférica en el Inspector.

La fuerza de explosión depende de la masa de un cuerpo rígido (y potencialmente la distancia desde el centro de explosión).

Configuración:

  • La fuerza define el efecto de la explosión en cuerpos en metros/segundo. El cambio de velocidad real es menor en función del tipo de explosión y la masa crítica (consulte a continuación).
  • Distancia de influencia controla el rango de la fuerza de explosión.
  • Tipo de campo define cómo se debilita el efecto de explosión con distancia.
    • Constante supone que el efecto es independiente de la distancia.
    • Linear Drop supone que el efecto cae de máximo a cero (en la distancia de influencia).
  • Masa crítica define la masa del cuerpo no afectada por la explosión. Los cuerpos más pesados sienten menos efecto que los cuerpos más ligeros. Por ejemplo, un cuerpo rígido que pesa un tercio de la masa crítica se sentirá dos tercios del cambio de velocidad.
  • Escala de impulso angular define dónde se aplica la fuerza. Si se establece en 0, la fuerza se aplica en el centro de masa, lo que significa que no hay rotación. Si se establece en 1, la fuerza se aplica en el punto más cercano a la explosión.
  • Oclusión Si está habilitada, los objetos ocultos detrás de otros objetos no sienten la explosión. Sólo se comprueba una sola raya entre el centro de la explosión y el centro de masa para la oclusión.

Explosión direccional

Crea una explosión que hace que todos los cuerpos dentro de un desencadenador se muevan en una dirección específica.

Captura de pantalla de las opciones de script de Eplosion direccional en inspector.

La fuerza de explosión depende de la masa de un cuerpo rígido. Para que este componente funcione, debe asociarse a un colisionador de desencadenador. Todos los cuerpos dentro del colisionador del desencadenador se ven afectados.

Configuración:

  • La fuerza define el efecto de la explosión en cuerpos en metros/segundo. El cambio de velocidad real es menor en función de la masa crítica (consulte a continuación).
  • Dirección define la dirección de la explosión. Este valor se normaliza, por lo que la magnitud no tiene ningún efecto.
  • Direction In Local Space define si la dirección se especifica en una transformación local de la explosión.
  • Masa crítica define la masa del cuerpo no afectada por la explosión. Los cuerpos más pesados sienten menos efecto que los cuerpos más ligeros. Por ejemplo, un cuerpo rígido que pesa un tercio de la masa crítica se sentirá dos tercios del cambio de velocidad.
  • Escala de impulso angular define dónde se aplica la fuerza. Si se establece en 0, la fuerza se aplica en el centro de masa, lo que significa que no hay rotación. Si se establece en 1, la fuerza se aplica en el punto más cercano a la explosión.
  • Los cuerpos afectados definen condiciones de filtrado opcionales para los cuerpos afectados por este componente. (De forma predeterminada, todos los cuerpos se ven afectados).

Estabilización de articulaciones

Estabiliza el sistema de restricciones ajustando el tensor de inercia de rigidbody.

Captura de pantalla de las opciones del script de estabilización conjunta en el Inspector.

El script funciona en todos los elementos secundarios con el componente Rigidbody o Joint adjunto.

Configuración:

  • Factor de estabilización define cuánto se sacrifica la corrección física para la estabilidad. Por ejemplo, 1 -> principalmente la física correcta, 4 -> peligro, 10 -> estable con artefactos.
  • Proyección conjunta permite la proyección de restricciones en todos los elementos secundarios. Esto puede mejorar drásticamente la estabilidad, pero sacrifica la corrección física. Solo funciona en juntas configurables y de caracteres.
  • La distancia de proyección define la infracción máxima permitida de restricciones. Para evitar problemas de física, intente establecer este valor lo más alto posible.

Superficie de rebotar

Crea una superficie de rebote que hace que todos los objetos que colisionan se rebotan con una velocidad predefinida.

Captura de pantalla de las opciones de script de Superficie de recompensa en el Inspector.

Configuración:

  • La magnitud de la velocidad de rebote define la magnitud de velocidad mínima y máxima del objeto después del rebote. Consulte Efecto de rebote para saber cómo se determina la dirección. Establezca Min y Max en igual valor si desea especificar una sola velocidad de destino.
  • Efecto de rebote define el comportamiento previsto de los objetos de rebotar.
    • Rebote perfecto: el ángulo de velocidad entrante al plano de colisión normal es el mismo que el ángulo de la velocidad de salida.
    • Establecer magnitud de velocidad: el ángulo de la velocidad de salida a normal se ve afectado por la fricción.
    • Establecer velocidad normal: similar a Establecer magnitud de velocidad, pero la magnitud de la velocidad de rebote define la magnitud de la velocidad perpendicular al plano (velocidad normal).
    • Rebotar hacia el cuerpo objetivo: la dirección de la velocidad saliente se dirige hacia un cuerpo objetivo. Si se selecciona esta opción, aparece la propiedad Cuerpo de destino y debe establecerse.
  • La fricción controla cuánto velocidad tangencial se pierde tras la colisión. Cuando se establece en 0, el objeto de recompensa conserva la velocidad tangencial. Cuando se establece en 1, el objeto rebota en dirección perpendicular a la superficie (la velocidad tangencial es 0). Para los valores de más de 1, el objeto rebota hacia atrás.

Centro de desplazamiento de masa

Desplaza el centro de masa de un cuerpo rígido.

Captura de pantalla de las opciones del script Centro de desplazamiento masivo en el Inspector.

Configuración:

  • Desplazamiento en coordenadas locales define el desplazamiento en coordenadas locales.

Ámbito de física local

Todos los elementos rígidos de la jerarquía de este componente no se sincronizarán entre los clientes. Este script debe agregarse a elementos rígidos cuyas posiciones o rotaciones se establecen a través de un script visual o una animación.

Captura de pantalla de la configuración del ámbito de física local en el inspector.

Obtenga información sobre los nodos de eventos físicos de scripting visual mesh.

Iniciar trayectoria

Calcula la posición futura del cuerpo rígido en el espacio libre bajo el efecto de gravedad.

Captura de pantalla de las opciones de script Throw Trajectory (Iniciar trayectoria) en inspector.

Configuración:

  • Modo rigidbody: cuando se establece en true, la posición y la velocidad rigidbody se toman como condiciones iniciales. Habilita el cálculo de la posición futura en tiempo real.
  • Rigidbody (solo se aplica cuando el modo Rigidbody se establece en true).): define qué rigidbody se toma.
  • Velocidad inicial: (solo se aplica cuando el modo Rigidbody está establecido en false): define la velocidad inicial. La posición inicial se toma de la posición del objeto GameObject al que está asociado este componente.
  • Número máximo de puntos: define el número máximo de puntos calculados.
  • Paso de tiempo: define la diferencia de tiempo entre las posiciones futuras.
  • Gravedad: esta es la aceleración aceleradora.
  • Representador de línea: especifica el representador de línea en el que se copia la posición de los puntos. Esto muestra la trayectoria de lanzamiento.

Restablecer transformaciones de cuerpo

Cuando se desencadena mediante un script visual, este componente restablece la posición y la rotación de todos los cuerpos físicos en la misma transformación o en cualquier transformación secundaria a sus valores iniciales.

Captura de pantalla del componente Reset Body Transforms (Restablecer transformaciones de cuerpo) en el Inspector.

Configuración:

  • Guardado automático inicial: si está seleccionado, use las transformaciones en el inicio del entorno como transformaciones de restablecimiento. Si no está seleccionado, debe usar un script visual para llamar a la función Save Body Transforms Now (Guardar transformaciones de cuerpo ahora ) para guardar las transformaciones de restablecimiento antes de realizar un restablecimiento.

Funciones disponibles para scripts visuales

  • Restablecer transformaciones de cuerpo ahora: restablece la posición y la rotación de todos los cuerpos físicos en el ámbito de este componente Reset Body Transforms a sus transformaciones de restablecimiento guardadas más recientemente. Invoque esto solo en un cliente.

Captura de pantalla del componente Restablecer transformaciones de cuerpo en modo de edición con el botón Restablecer transformaciones de cuerpo ahora solo en modo de reproducción resaltado.

Captura de pantalla del componente Restablecer transformaciones de cuerpo en modo de reproducción con el botón Restablecer transformación de cuerpo ahora resaltado.

  • Guardar transformaciones de cuerpo ahora Guarda la posición actual y la rotación de todos los cuerpos físicos en el ámbito de este componente Reset Body Transforms como sus transformaciones de restablecimiento. Invoque esto solo en un cliente.

Pasos siguientes