Detección de colisión y activación de unity3d

A. Conceptos básicos 

 Para generar colisiones, debes agregar cuerpos rígidos y colisionadores a los objetos del juego. Los cuerpos rígidos pueden hacer que los objetos se muevan bajo la influencia física. El cuerpo de colisión es un tipo de componente físico que debe agregarse al objeto del juego junto con el cuerpo rígido para desencadenar la colisión. Si dos cuerpos rígidos chocan entre sí, el motor de física calculará la colisión a menos que los dos objetos tengan un cuerpo en colisión.En la simulación física, los cuerpos rígidos sin cuerpos en colisión se atravesarán entre sí.

Condiciones necesarias para la colisión de objetos:

  Ambos objetos deben tener un Collider, y uno de los objetos también debe tener un Rigidbody.

 

En unity3d, hay dos formas de detectar colisiones, una es usar colliders y la otra es usar disparadores.

 

Collider : Un grupo de componentes, contiene muchos tipos, tales como: Box Collider (cuerpo de colisión de caja), Mesh Collider (cuerpo de colisión de malla), etc. Estos colliders se utilizan en diferentes situaciones, pero deben agregarse a GameObjecet.

Trigger , simplemente marque la casilla de selección de propiedad IsTrigger en el componente de colisionador en el panel del inspector.

 

Detección de información de disparo:

  1.MonoBehaviour.OnTriggerEnter (Colisionador de colisionador) al ingresar el gatillo

  2.MonoBehaviour.OnTriggerSalir (Colisionador de colisionador) cuando sale el gatillo

  3.MonoBehaviour.OnTriggerStay (Colisionador colisionador) como gatillo fijo

 

Detección de información de colisión:

  1.MonoBehaviour.OnCollisionEnter (colisión colisión) al entrar en el colisionador

  2.MonoBehaviour.OnCollisionSalir (colisión de colisión) Al salir del colisionador

  3.MonoBehaviour.OnCollisionStay (colisión de colisión) cuando permanece colisionador

 

B. ¿Cuándo se activa?

La siguiente es la situación de prueba que hice: el objeto A golpea al objeto B.

1. A (cuerpo de colisión), B (sin cuerpo de colisión, independientemente de si hay un cuerpo rígido), no hay evento de activación.

2. A (colisionador), B (colisionador), no se activa ningún evento.

2. A (colisionador y cuerpo rígido, encienda IsTrigger), B (colisionador, apague IsTrigger), ambas partes pueden recibir eventos de activación.

3. A (colisionador y cuerpo rígido, apague IsTrigger), B (colisionador, encienda IsTrigger), ambos lados pueden recibir el evento de activación.

4. A (colisionador, apagar IsTrigger), B (colisionador y cuerpo rígido, encender IsTrigger), no se activa ningún evento.

5. A (colisionador, encienda IsTrigger), B (colisionador y cuerpo rígido, apague IsTrigger), no se activa ningún evento.

 

Experimentos adicionales:

6. A (colisionador y cuerpo rígido, encienda IsTrigger) caída libre, y B (colisionador) golpea A, ambas partes pueden recibir el evento de activación.

 

Según el experimento anterior, si desea recibir un evento de activación, se deben cumplir las siguientes tres condiciones:

1. Debe haber un componente Collider (Collider), de hecho, el evento de colisión anterior también requiere este prerrequisito.

2. Debe haber un objeto con un componente rígido del cuerpo y en un cuerpo en movimiento (incluido el movimiento activo para golpear a otros y ser golpeado por otros durante el movimiento).

3. Al menos uno de los dos colisionadores tiene IsTrigger activado.

 

También hay dos puntos:

1. Los dos objetos que generan el evento de disparo se atravesarán, para ser precisos, el objeto que está encendido IsTrigger será ignorado por el bloqueo del motor de física, por lo que pasarán dos objetos.

Dos, dos objetos reciben el evento de colisión o ambos reciben el evento de activación, no habrá situación en la que uno reciba el evento de activación y el otro reciba el evento de colisión.

 

Otro punto de la experiencia es que al controlar un objeto A para que colisione con otro objeto B, no modifique directamente la propiedad de posición de la Transformación del objeto A, porque encontrará que incluso si los dos chocan, seguirán atravesando. La razón es porque establecemos las coordenadas directamente. Si el objeto A tiene un componente de cuerpo rígido, debe usar AddForce para agregar una fuerza al objeto y luego dejar que el motor de física mueva el objeto. Si hay una colisión, no lo hará pasar por.

 

El efecto de la colisión:

Colisionador de cuerpo rígido en movimiento vs colisionador estático

Hay efectos de colisión, específicamente: para un colisionador de cuerpo rígido en movimiento, producirá efectos físicos después de encontrar un colisionador estático, como rebote, incapacidad de avanzar, etc .; para un colisionador estático, producirá un ligero efecto de colisión, como un ligero temblor, pero no se moverá.

 

 

Colisionador de cuerpo rígido en movimiento vs colisionador de cuerpo rígido estático

Hay un efecto de colisión y aparecen efectos físicos normales, como rebotes, para ambos objetos.

 

 

Colisionador estático en movimiento VS colisionador de cuerpo rígido cinemático estático

No hay efecto de colisión. El colisionador cinemático de carrocería rígida no está sujeto a ninguna fuerza externa.

 

 

Cinemática en movimiento Colisionador de cuerpo rígido VS Colisionador estático

No hay efecto de colisión. El colisionador cinemático de carrocería rígida no está sujeto a ninguna fuerza externa.

 

 

Colisionador de cuerpo rígido de cinemática en movimiento VS Colisionador de cuerpo rígido estático

Hay un efecto de colisión, pero solo el colisionador de cuerpo rígido tiene un efecto de colisión, como rebote, etc. El colisionador de cuerpo rígido cinemático no se ve afectado por la fuerza.

 

 

Colisionador de cuerpo rígido en movimiento vs colisionador de cuerpo rígido cinemático estático

Hay un efecto de colisión, pero solo el colisionador de cuerpo rígido tiene un efecto de colisión, como rebote, etc. El colisionador de cuerpo rígido cinemático está inmóvil como una pared.

 

 

Colisionador de cuerpo rígido cinemático en movimiento VS colisionador de cuerpo rígido cinemático estático

¿Qué sucede cuando los dos emperadores supremos se encuentran? No pasa nada ... como dos colisionadores estáticos.

Información de colisión e información de activación

 

Para saber si la función de colisión (o la información de activación) se emitirá durante la colisión, consulte la tabla a continuación. La información de colisión se refiere a las tres funciones OnCollisionEnter (), OnCollisionStay () y OnCollisionSalir (), y la información de disparo se refiere a las tres funciones OnTriggerEnter (), OnTriggerStay y OnTriggerSalir ().

 

 

 

 

Se produce una detección de colisión y se envían mensajes en caso de colisión
tras colisión con una detección de colisión y se envía información de colisión
  Colisionador
estático Colisionador estático
Dispositivo de
colisión de cuerpo rígido Rigidbody Collider

Dispositivo
cinemático de colisión de cuerpo rígido Kinematic  Rigidbody Collider
Estático 
el gatillo colisionador
estático gatillo colisionador
Rigidbody 
el colisionador de
gatillo colisionador de gatillo rígido
Rigidbody Kinematic 
the Trigger Collider
cinemático cuerpos rígidos trigger Collider
Colisionador estático   Y        
Colisionador de cuerpo rígido Colisionador de cuerpo rígido Y Y Y      
Dispositivo
cinemático de colisión de cuerpo rígido Kinematic Rigidbody Collider 
  Y        
Colisionador de
gatillo estático Colisionador de gatillo estático
           
Colisionador de gatillo de cuerpo
rígido Colisionador de gatillo rígido
           
Colisionador de gatillo de
cuerpo rígido cinemático Colisionador de gatillo de cuerpo rígido cinemático
           
Los mensajes de activación se envían en caso de colisión
después de que la colisión haya activado Información
  Colisionador
estático Colisionador estático
Dispositivo de
colisión de cuerpo rígido Rigidbody Collider

Dispositivo
cinemático de colisión de cuerpo rígido Kinematic  Rigidbody Collider
Estático 
el gatillo colisionador
estático gatillo colisionador
Rigidbody 
el colisionador de
gatillo colisionador de gatillo rígido
Rigidbody Kinematic 
the Trigger Collider
cinemático cuerpos rígidos trigger Collider
Colisionador estático         Y Y
Colisionador de cuerpo rígido Colisionador de cuerpo rígido       Y Y Y
Dispositivo
cinemático de colisión de cuerpo rígido Kinematic Rigidbody Collider
      Y Y Y
Colisionador de gatillo estático   Y Y   Y Y
Colisionador de gatillo de cuerpo
rígido Colisionador de gatillo rígido
Y Y Y Y Y Y
Colisionador de gatillo de
cuerpo rígido cinemático Colisionador de gatillo de cuerpo rígido cinemático
Y Y Y Y Y Y
 

Supongo que te gusta

Origin blog.csdn.net/u011105442/article/details/108118340
Recomendado
Clasificación