física

El sistema de física le ayuda a simular comportamientos físicos del mundo real, como colisiones y fuerzas.

Módulo de Física

Física es un mod que se carga por defecto.

imagen-20240923155343336

Puede modificar la configuración física global aquí:

  1. La dirección y magnitud de la gravedad.
  2. Material físico predeterminado. Consulta la sección “Colisión - Material físico” a continuación.
  3. Umbral energético global. Calcula la energía cinética de un objeto mediante la fórmula:
Ek=1/2<em>m</em>v2
m representa la masa de un objeto en kg.

v representa la velocidad física en m/s.

Cuando la energía cinética de un objeto es inferior a este umbral, deja de moverse. Por ejemplo, si el umbral se establece en 0,5, un objeto de 1 kg deja de moverse cuando la velocidad es inferior a 1 m/s.
  1. Umbral de colisión del mando del personaje. Solo aplicable a mods de jugador con la opción [Usar mando del jugador con física] activada o con mandos de personaje completamente personalizados.

La fórmula del momento es:

p=mv

m es masa, la unidad es kg.

v es la velocidad en m/s.

Al ocurrir una colisión, se resta el momento del jugador y del cuerpo rígido impactado, y se calcula el módulo de la diferencia de momento en la normal de colisión, comparándolo con el umbral de colisión del controlador del personaje. Si es menor que este umbral, el cuerpo rígido será empujado de forma constante; de u200bu200blo contrario, se producirá una colisión violenta.

En términos generales, los parámetros que influyen en si una colisión es violenta son:

  1. Cuanto mayor sea la masa del jugador o personaje, más probable será que se produzca una colisión violenta.

  2. Cuanto mayor sea la velocidad relativa entre el jugador o personaje y el cuerpo rígido impactado, mayor será la probabilidad de que se produzca una colisión violenta.

  3. Cuanto mayor sea el umbral de colisión del controlador del personaje, menos probable será que colisione violentamente.

Por ejemplo, cuando el umbral de colisión del controlador del personaje se establece en 50, un jugador de 50 kg que viaja a 1 m/s puede colisionar violentamente con cualquier cuerpo rígido estacionario de masa similar al jugador o personaje en una colisión frontal.

  1. Nivel físico. Que se produzcan colisiones a diferentes niveles depende de la configuración física.

Para configurar una capa física no predeterminada para un jugador:

imagen-20240717181446557

Deshabilite la colisión de niveles personalizados y predeterminados en la configuración de física:

imagen-20240717181534541

Descubrirás que el jugador puede atravesar cualquier objeto del nivel de física predeterminado sin sentir:

imagen-20240923163608324

Los objetos que dependen de la activación por colisión tampoco se activarán:

imagen-20240923163636790

Formas de colisión y colisiones

Hay dos componentes básicos necesarios para aplicar objetos personalizados al sistema de física:

Componente de forma de colisión y Componente de colisión.

imagen-20240923150401236

En la mayoría de los objetos solo encontrarás un componente de colisión.

Porque generalmente no son objetos personalizados:

imagen-20240923150521786

Para formas de colisión y materiales físicos personalizados, recomendamos crear un nuevo nodo vacío y operar en él:

imagen-20240923150725335

imagen-20240923150807166

Forma de colisión

El componente de forma de colisión determina los límites dentro de los cuales los objetos chocan.

Tipo de colisión:

imagen-20240923153336796

El tipo de colisión determina su forma básica. Ofrecemos tres formas básicas: cubo, esfera, cápsula y malla.

Los colisionadores de malla son formas de colisión que se simulan en función de los límites de un modelo y son cercanas a la apariencia visual del modelo.

Para el nodo vacío creado, debe agregar un componente de renderizado personalizado para especificar su forma y tamaño de cuadrícula.

imagen-20240923153752769

Para las formas de colisión básicas, puede modificar su posición, tamaño o ajustar su forma manualmente:

imagen-20240923153907205

Arrastre el punto amarillo en el cuadro de colisión para ajustar la forma de la colisión

La forma de colisión de malla tiene la opción de ser convexa o no.

imagen-20240923154035083

Polígonos Convexos: Si se colisiona con otros Colisionadores de Malla. Los Colisionadores de Malla sin Polígonos Convexos habilitados solo son compatibles con GameObjects sin un componente Rigidbody. Para usar un Colisionador de Malla con un componente Rigidbody, marque la opción Polígonos Convexos.

Colisión

Materiales físicos

El material físico determina algunas propiedades físicas del cuerpo de colisión.

En el caso de los objetos personalizados, el material físico de la colisión se puede personalizar. Sin embargo, en la mayoría de los objetos no personalizados proporcionados oficialmente, el material físico no admite modificaciones.

imagen-20240923154559903

Se pueden crear archivos de material físico.

imagen-20240923154405512

Puede modificar las siguientes propiedades en el panel de inspección del archivo de material físico para que todos los objetos montados con el material físico obtengan las propiedades físicas correspondientes.

imagen-20240923154620475

¿Es un detonante?

Cuando la casilla de verificación ¿Es un disparador? está marcada, el colisionador ignora las colisiones físicas pero puede activar eventos.

Esto significa que el objeto no participará en la lógica de colisión física predeterminada:

imagen-20240923154941118

Pero un evento de colisión puede desencadenarse:

imagen-20240923155036397

imagen-20240923155220723

Nivel físico

Determina el nivel de física. La ocurrencia de colisiones en diferentes niveles depende de la configuración del módulo de física.

#Cuerpo rígido

El componente Rigidbody hace que el objeto sea controlado físicamente, lo que permite que sea afectado por fuerzas.

Para agregar un componente Rigidbody, primero debe tener un componente Collision.

Los cuerpos rígidos se dividen en estáticos, dinámicos y cinemáticos.

imagen-20240924112556743

Los cuerpos rígidos estáticos se utilizan principalmente para objetos sin velocidad ni fuerza, como el suelo, las paredes y otros objetos inmóviles. Modificar la posición y la escala de estos objetos aumentará el rendimiento.

El cuerpo rígido dinámico se utiliza principalmente para objetos con propiedades mecánicas como masa y velocidad, que pueden verse afectadas por la fuerza.

imagen-20250630165950663

Puede modificar los parámetros físicos, como el centro de gravedad y la masa, en la opción Cuerpo Rígido Dinámico. También puede bloquear un eje específico para que el cuerpo rígido no experimente un desplazamiento o rotación específicos.

Los cuerpos rígidos cinemáticos pueden controlarse manualmente para moverse y rotar, pero no se ven afectados por colisiones ni fuerzas de otros cuerpos rígidos. Se utilizan frecuentemente en animación y producción de efectos especiales.

Controlador de personaje

##Controlador de jugador FF

De forma predeterminada, las acciones del jugador en el personaje del jugador se heredan del controlador del jugador de FreeFire.

Controlador de jugador con física

En el módulo del jugador, tras seleccionar [Usar el mando del jugador con efectos físicos], se pueden modificar los parámetros físicos de algunos mandos. En este caso, el jugador empieza a participar en la simulación física del juego hasta cierto punto; por ejemplo, la configuración del [Umbral de colisión del mando del personaje] en el módulo de física empezará a surtir efecto.

imagen-20240924115708102

<strong>Si usar un controlador de jugador con efectos físicos: </strong>Marque esta opción para usar un controlador con efectos físicos personalizados y expandir las configuraciones relacionadas.

<strong>Altura total, incluidos los hemisferios superior e inferior:</strong> La altura del cuerpo de colisión de la cápsula del personaje.

<strong>El radio de los hemisferios superior e inferior: </strong>El radio de la cápsula no puede exceder la mitad de la altura.

<strong>Calidad:</strong> Calidad del jugador.

<strong>Ángulo máximo de subida:</strong> Las pendientes que superen este ángulo no se pueden subir y el jugador comenzará a deslizarse hacia abajo.

<strong>Desplazamiento vertical del paso:</strong> La distancia que el jugador puede desviarse de la configuración sin abandonar el suelo o bloquearse, comúnmente utilizado al subir y bajar escaleras.

<strong>Distancia mínima de movimiento:</strong> Si la distancia que debe moverse el controlador del personaje es menor que este valor, el jugador permanecerá inmóvil.

Grosor de la piel: la profundidad a la que se permite que otros objetos se incrusten en el colisionador del personaje, lo que se utiliza para evitar vibraciones o atascos.

<strong>Aceleración gravitacional que recibes:</strong> La aceleración gravitacional que recibes en tres dimensiones. Para los personajes jugadores, esta configuración anula la configuración de física global.

<strong>Habilitar empuje personalizado:</strong> Al activarlo, se puede personalizar la fuerza que aplica el personaje al empujar el cuerpo rígido. Expande la configuración correspondiente después de activarlo.

<strong>Fuerza de empuje personalizada:</strong> La cantidad de fuerza que se aplica cuando el personaje empuja el cuerpo rígido.

<strong>Altura del salto múltiple:</strong>La altura del salto al realizar un salto múltiple.

<strong>Número máximo de saltos múltiples: </strong>El número máximo de saltos admitidos por cada salto múltiple.

<strong>Movimiento aéreo:</strong> cuando está habilitado, los jugadores pueden cambiar su velocidad y dirección de movimiento en el aire.

Controlador de personaje totalmente personalizable

En el controlador de personaje totalmente personalizado, puedes personalizar completamente el controlador de personaje sin ninguna restricción, pero este controlador no tiene ninguna función predeterminada.

Para utilizar un controlador de personaje completamente personalizado, es necesario utilizar el componente controlador de personaje, y el objeto utilizado como personaje controlado no puede tener colisión, forma de colisión, cuerpo rígido y otros componentes.

imagen-20240924120030311

Consulte el ejemplo a continuación para un uso específico.

Ejemplo

Explicaremos cómo utilizar un controlador de personaje personalizado creando un controlador de personaje en modo horizontal simple.

Preparar la escena

Simplemente construye una escena.

imagen-20240926150721110

Creando un personaje jugador

Aquí simplemente hacemos un personaje jugador simple.

Crear un objeto vacío:

imagen-20240926150911348

Añade un componente Controlador de personaje a este objeto.

imagen-20240926151012964

Añade un atributo personalizado al controlador del personaje: estado. Usaremos el estado para controlar el movimiento izquierdo y derecho del personaje más adelante.

imagen-20240926151107697

Actualmente, el personaje no tiene apariencia, así que agrega un nodo secundario vacío a este nodo vacío para mostrar la apariencia.

imagen-20240926151307907

Agregue un componente de renderizado personalizado para nodos secundarios vacíos.

imagen-20240926151344936

Seleccione Malla como Cilindro.

imagen-20240926151443376

En este momento, seleccione el nodo padre y observe nuestro personaje en el editor de escena.

imagen-20240926151546844

La malla de cápsula es el componente controlador del personaje del objeto principal, y el cilindro es el componente de renderizado personalizado del objeto secundario. Observamos que el controlador del personaje parece ser un poco más alto de lo que parece y tiene un alcance menor que el del modelo.

Ajuste la altura relativa de los objetos secundarios y la apariencia del controlador de personajes para que coincidan aproximadamente.

imagen-20240926151803081

imagen-20240926151903119

Preste especial atención a que, para el controlador del personaje, su altura debe ser mayor al doble del radio.

Establece el personaje creado como prefabricado y renómbralo New_player (o como prefieras). Elimina el objeto vacío usado en la escena.

imagen-20240926152126406

Inicialización

Crea un script global para bloquear al jugador predeterminado, crear un nuevo jugador y establecer el método de movimiento.

imagen-20240926153801533

1. Borrar la interfaz de usuario predeterminada

Para usar un controlador de personaje personalizado, primero debes solucionar el problema del controlador de jugador integrado. El personaje del jugador no se puede eliminar del juego, pero podemos usar algunos métodos para que no se pueda controlar ni ver.

Al cerrar la interfaz de usuario predeterminada, podemos bloquear todas las interfaces de usuario que pueden manipular directamente al reproductor predeterminado.

imagen-20240926152534232

2. Usar una cámara personalizada

La cámara predeterminada sigue al personaje del jugador predeterminado, por lo que necesitamos usar una nueva cámara personalizada para observar únicamente al nuevo personaje del jugador que creamos.

imagen-20240926152824590

3. Almacenamiento de datos del jugador

Crea una variable global para almacenar el controlador de personaje personalizado de cada jugador.

imagen-20240926153846600

imagen-20240926153853898

imagen-20240926153934182

4. Establecer el método de movimiento

Controlamos el movimiento juzgando el estado del controlador del personaje, estableciendo 0 para ningún movimiento, 1 para movimiento hacia la izquierda y 2 para movimiento hacia la derecha.

Cada vez que se realiza una actualización, todos los controladores personalizados ejecutan un método de movimiento. Este método comprueba el estado del controlador del jugador. Si está en estado de movimiento, se desplaza ligeramente en la dirección correspondiente.

imagen-20240926154524350

Cuando se actualiza el cuadro fijo, el evento se activa a una frecuencia de 30 veces por segundo, lo que equivale a que el controlador del personaje se mueva a una velocidad de 30*0,1=3 m/s.

Crear una interfaz de usuario de acción personalizada

Crea una interfaz de usuario para controlar el movimiento del controlador de personaje personalizado.

imagen-20240926154930426

Los tres botones se utilizan para mover al jugador hacia la izquierda, hacia la derecha y saltar.

Agregue scripts a las entidades de UI y use la lógica de procesamiento de devolución de llamada:

  1. Saltar

El salto se logra aplicando fuerza al controlador del personaje personalizado.

imagen-20240926155224218

La interfaz de aplicación de fuerza puede seleccionar directamente la velocidad de la aplicación, evitando el cálculo de fuerza y masa.

  1. Móvil

Controlamos el movimiento cambiando de estado, manejando el estado del jugador presionando y soltando el botón por separado.

imagen-20240926155731649

imagen-20240926155753513

Agregue devoluciones de llamadas en los botones para llamar a estos métodos respectivamente.

  1. Saltar

imagen-20240926155857104

  1. Móvil

imagen-20240926155911048

imagen-20240926155924485

depuración

imagen-20240926160400721

La lógica funciona normalmente.

Agregado: Depuración de lentes

Al utilizar una lente personalizada, a veces es difícil determinar el parámetro de lente apropiado.

Podemos ajustar la cámara durante la fase de desarrollo añadiendo una interfaz de usuario para controlarla. Esta misma idea puede ayudarte a optimizar continuamente el rendimiento del controlador de tu personaje durante la fase de depuración.

Crear la interfaz de usuario

Usamos botones para controlar el movimiento de la lente hacia arriba, abajo, izquierda, derecha, adelante y atrás, e imprimimos el desplazamiento actual de la lente a través de un botón.

imagen-20240926160759275

Escribiendo el guión

Agregar scripts para entidades de UI.

Mueva la lente, tomando como ejemplo el movimiento hacia arriba:

imagen-20240926160942701

Parámetros de la lente de impresión:

imagen-20240926161034212

Agregar devolución de llamada

Agregue devoluciones de llamadas para cada botón:

Tomemos como ejemplo el ascenso:

imagen-20240926161123354

Parámetros de la lente de impresión:

imagen-20240926161149538

De esta manera puedes ajustar la cámara para lograr el efecto que deseas al depurar el juego:

imagen-20240926161255378