Diferencia entre revisiones de «Unity Detección de colisiones. Colliders»
Ir a la navegación
Ir a la búsqueda
| Línea 13: | Línea 13: | ||
* Unity da solución a esto mediante el uso de '''Colliders'''. | * Unity da solución a esto mediante el uso de '''Colliders'''. | ||
| + | : Disponemos de varios tipos de 'colliders', pero los que consumen menos CPU para realizar cálculos son los denominados '''Primitives Colliders''': | ||
| + | :* Esfera | ||
| + | :* Caja | ||
| + | :* Cápsula | ||
| + | [[Imagen:Unity3d_collider_1.jpg|500px|center]] | ||
| + | |||
| + | * Recordar que [http://wiki.cifprodolfoucha.es/index.php?title=UNITY_C%C3%A1mara_en_perspectiva#Rayos_de_detecci.C3.B3n_de_choques ya vimos anteriormente otro tipo de colisión, que es haciendo uso de rayos]: | ||
| + | [[Imagen:Unity3d_camara_ray_1.jpg|300px|center]] | ||
| + | |||
| + | |||
| + | |||
| + | * Otro aspecto a tener en cuenta es que los Collider están íntimamente relacionados con los RigidBody, ya que el RigidBody hace uso de los Collider como base para producir los 'efectos' físicos, como choques, rotaciones,... | ||
| + | |||
| + | |||
| + | |||
| + | <br /> | ||
| + | =Creando Colliders= | ||
| + | |||
| + | * El Collider es un componente de un GameObject, por lo tanto sólo tenemos que escribir 'Collider' para ver todos los disponibles: | ||
| + | |||
| + | [[Imagen:Unity3d_collider_2.jpg|500px|center]] | ||
| + | |||
| + | * El collider tiene un tamaño y una posición la cual puede ser modificada de forma gráfica: | ||
| + | <gallery caption="Creando un Collider y ajustando el tamaño y posición" widths="350" heights="300px" perrow="2"> | ||
| + | Image:Unity3d_collider_3.jpg| Creamos un Cubo y añadimos un componente BoxCollider. No lo apreciamos mucho, pero el Collider es una figura igual que el cubo de color verde en sus aristas. Para verlo mejor vamos a cambiar la vista | ||
| + | Image:Unity3d_collider_4.jpg| Ahora podemos apreciar el cubo del Collider con las aristas en verde. | ||
| + | Image:Unity3d_collider_5.jpg| En la ventana Inspector podemos cambiar la posición y tamaño del Collider. Al igual que en la componente Transform, si mantenemos presionado el botón izquierdo del ratón encima de cualquiera de dichas propiedades (de su etiqueta, es decir, sobre la letra X, Y,Z) y movemos a izquierda-derecha el ratón sin soltar el botón, los valores cambiarán. | ||
| + | Image:Unity3d_collider_6.jpg| Otra forma mucho más fácil de <u>modificar su tamaño</u> es presionando el icono indicado en la imagen. Al hacerlo aparecerán varios puntos (en el caso del cubo 6, uno por cada cara). Si ahora presionamos con el ratón cualquiera de dichos puntos y lo movemos, podemos cambiar gráficamente el tamaño del Collider. | ||
| + | Image:Unity3d_collider_7.jpg| Si hacemos un tamaño más pequeño al collider podemos cambiar el tipo de vista a '''Shared''' y se puede apreciar donde queda el Collider. | ||
| + | </gallery> | ||
| + | |||
| + | |||
| + | |||
| + | <br /> | ||
| + | ==La forma importa== | ||
| + | |||
| + | * Como comenté antes, el Collider va a ser empleado tanto para determinar cuando dos GameObjects 'chocan' como para ser utilizad por el RigidBody para determinar el comportamiento físico del GameObject. | ||
| + | |||
| + | * Dependiendo de nuestras necesidades, el Collider se tendrá que ajustar de forma lo más precisa al GameObject o no. | ||
| + | : Por ejemplo, podría tener un Collider en forma de esfera con un tamaño más grande que el GameObject para determinar cuando un enemigo ataca al jugador. Sería su radio de acción. | ||
| + | |||
| + | : Sin embargo, a nivel de el comportamiento físico, por ejemplo, al caer, querremos que los Collider se ajusten lo más posible al GameObject. | ||
| + | |||
| + | |||
| + | * Veamos un ejemplo de esto segundo: | ||
Revisión del 19:29 3 feb 2019
Introducción
- Más información en:
- En los juegos vamos a necesitar disponer de algún mecanismo que nos diga cuando dos objetos 'chocan'.
- Ejemplo de uso:
- Proyectiles de todo tipo (balas, misiles, láser,...)
- Enemigos que van tras el protagonista
- Abrir o cerrar puertas al acercarse / alejarse
- Unity da solución a esto mediante el uso de Colliders.
- Disponemos de varios tipos de 'colliders', pero los que consumen menos CPU para realizar cálculos son los denominados Primitives Colliders:
- Esfera
- Caja
- Cápsula
- Otro aspecto a tener en cuenta es que los Collider están íntimamente relacionados con los RigidBody, ya que el RigidBody hace uso de los Collider como base para producir los 'efectos' físicos, como choques, rotaciones,...
Creando Colliders
- El Collider es un componente de un GameObject, por lo tanto sólo tenemos que escribir 'Collider' para ver todos los disponibles:
- El collider tiene un tamaño y una posición la cual puede ser modificada de forma gráfica:
- Creando un Collider y ajustando el tamaño y posición
En la ventana Inspector podemos cambiar la posición y tamaño del Collider. Al igual que en la componente Transform, si mantenemos presionado el botón izquierdo del ratón encima de cualquiera de dichas propiedades (de su etiqueta, es decir, sobre la letra X, Y,Z) y movemos a izquierda-derecha el ratón sin soltar el botón, los valores cambiarán.
Otra forma mucho más fácil de modificar su tamaño es presionando el icono indicado en la imagen. Al hacerlo aparecerán varios puntos (en el caso del cubo 6, uno por cada cara). Si ahora presionamos con el ratón cualquiera de dichos puntos y lo movemos, podemos cambiar gráficamente el tamaño del Collider.
La forma importa
- Como comenté antes, el Collider va a ser empleado tanto para determinar cuando dos GameObjects 'chocan' como para ser utilizad por el RigidBody para determinar el comportamiento físico del GameObject.
- Dependiendo de nuestras necesidades, el Collider se tendrá que ajustar de forma lo más precisa al GameObject o no.
- Por ejemplo, podría tener un Collider en forma de esfera con un tamaño más grande que el GameObject para determinar cuando un enemigo ataca al jugador. Sería su radio de acción.
- Sin embargo, a nivel de el comportamiento físico, por ejemplo, al caer, querremos que los Collider se ajusten lo más posible al GameObject.
- Veamos un ejemplo de esto segundo:
-- Ángel D. Fernández González -- (2018).

