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.
Puede modificar la configuración física global aquí:
- La dirección y magnitud de la gravedad.
- Material físico predeterminado. Consulta la sección “Colisión - Material físico” a continuación.
- Umbral energético global. Calcula la energía cinética de un objeto mediante la fórmula:
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.
- 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:
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:
-
Cuanto mayor sea la masa del jugador o personaje, más probable será que se produzca una colisión violenta.
-
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.
-
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.
- 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:
Deshabilite la colisión de niveles personalizados y predeterminados en la configuración de física:
Descubrirás que el jugador puede atravesar cualquier objeto del nivel de física predeterminado sin sentir:
Los objetos que dependen de la activación por colisión tampoco se activarán:
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.
En la mayoría de los objetos solo encontrarás un componente de colisión.
Porque generalmente no son objetos personalizados:
Para formas de colisión y materiales físicos personalizados, recomendamos crear un nuevo nodo vacío y operar en él:
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:
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.
Para las formas de colisión básicas, puede modificar su posición, tamaño o ajustar su forma manualmente:
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.
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.
Se pueden crear archivos de material físico.
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.
¿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:
Pero un evento de colisión puede desencadenarse:
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.
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.
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.
<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.
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.
Creando un personaje jugador
Aquí simplemente hacemos un personaje jugador simple.
Crear un objeto vacío:
Añade un componente Controlador de personaje a este objeto.
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.
Actualmente, el personaje no tiene apariencia, así que agrega un nodo secundario vacío a este nodo vacío para mostrar la apariencia.
Agregue un componente de renderizado personalizado para nodos secundarios vacíos.
Seleccione Malla como Cilindro.
En este momento, seleccione el nodo padre y observe nuestro personaje en el editor de escena.
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.
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.
Inicialización
Crea un script global para bloquear al jugador predeterminado, crear un nuevo jugador y establecer el método de movimiento.
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.
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.
3. Almacenamiento de datos del jugador
Crea una variable global para almacenar el controlador de personaje personalizado de cada jugador.
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.
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.
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:
- Saltar
El salto se logra aplicando fuerza al controlador del personaje personalizado.
La interfaz de aplicación de fuerza puede seleccionar directamente la velocidad de la aplicación, evitando el cálculo de fuerza y masa.
- Móvil
Controlamos el movimiento cambiando de estado, manejando el estado del jugador presionando y soltando el botón por separado.
Agregue devoluciones de llamadas en los botones para llamar a estos métodos respectivamente.
- Saltar
- Móvil
depuración
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.
Escribiendo el guión
Agregar scripts para entidades de UI.
Mueva la lente, tomando como ejemplo el movimiento hacia arriba:
Parámetros de la lente de impresión:
Agregar devolución de llamada
Agregue devoluciones de llamadas para cada botón:
Tomemos como ejemplo el ascenso:
Parámetros de la lente de impresión:
De esta manera puedes ajustar la cámara para lograr el efecto que deseas al depurar el juego: