Este es un tutorial básico sobre cómo usar Cuerpos Rígidos y Materiales de Física para hacer que los objetos caigan y reboten en nuestros proyectos de Unity.



Transcripción del video

¡Hola a todos! Este es un tutorial básico sobre cómo usar Cuerpos Rígidos y Materiales de Física para hacer que los objetos caigan y reboten en nuestros proyectos de Unity.

Unity proporciona un motor de simulación física, pero para acceder a estas características, es necesario usar un par de componentes (como Cuerpo Rígido y Colliders) y otros elementos.

Esto se debe a que la simulación física es computacionalmente costosa, por lo que, por defecto, los objetos NO participan en ella. Depende de nosotros especificar si y cómo un objeto debe comportarse físicamente.

¡Bien, vamos a empezar!

Estoy configurando una escena simple en Unity con un Cubo como el suelo y un modelo de baloncesto.

Notamos de inmediato que el objeto Cubo, que es un objeto nativo de Unity, ya tiene un componente Box Collider, mientras que mi modelo 3D, que creé a partir de un archivo externo, no tiene ningún componente Collider. Volveremos a esto más adelante.

Coloqué el modelo de baloncesto justo encima del Cubo, a cierta distancia, pero cuando presiono el botón Play, noto de inmediato que la pelota... no cae.

Para hacer que la pelota participe en la simulación física de la escena, solo necesitamos proporcionarle un componente Cuerpo Rígido, que se puede agregar fácilmente en el Inspector del objeto.

En la pestaña del componente, notamos algunas características interesantes; entre ellas, la masa (que podemos dejar como está para este ejemplo) y la casilla "Use Gravity", que está seleccionada por defecto, así que esta vez podemos iniciar el juego y notar que, de hecho, la pelota cae...

... ¡pero atraviesa el cubo subyacente, cayendo en el vacío!

Podrías pensar en añadir un componente Cuerpo Rígido, posiblemente sin gravedad, al objeto Cubo subyacente también, para que ambos objetos participen en la simulación física... sin embargo, podemos verificar de inmediato que esta suposición no resuelve el problema (así que, elimina el Cuerpo Rígido del cubo para evitar confusiones).

En pocas palabras, la pelota atraviesa el cubo... pero el Cubo tiene un Box Collider, así que debería detectar la colisión...

El hecho es que es el modelo de baloncesto el que NO tiene su propio Collider, así que necesitamos proporcionarle uno en el Inspector. Dado que el baloncesto tiene una forma esférica, elegimos un Sphere Collider para este objeto.

Al iniciar la simulación ahora, veremos la pelota caer sobre el Cubo y quedarse quieta sobre él.

Entonces, ten en cuenta que incluso el Cubo (y, en general, cualquier objeto de la escena que interactúe con la pelota) debe tener su propio Collider.

Así que, para recapitular: para interactuar entre sí, dos objetos de la escena deben tener Colliders, de lo contrario, se comportarán como fantasmas; además, para participar en la simulación física (y así ser afectados por la gravedad y otras fuerzas), un objeto también debe tener un componente Cuerpo Rígido.

Sin embargo, el resultado logrado hasta ahora no es satisfactorio: la pelota cae e impacta el cubo subyacente, ¡pero no rebota!

Las propiedades del material del objeto, sin embargo, no deben asignarse al Cuerpo Rígido, sino al Collider: estas propiedades conciernen a CUALQUIER objeto de la escena, no solo a aquellos que participan en la simulación física (es decir, Cuerpos Rígidos), por lo que necesitamos configurarlas en la pestaña del Collider.

En esta pestaña, encontramos un campo llamado Material, que está configurado en None por defecto pero sugiere que necesitamos proporcionarle un objeto "Physic Material".

Así que vamos a añadir un objeto Physic Material al Proyecto; atención: "Physic Material", no simplemente "Material", que en su lugar concierne al aspecto visual de un objeto.

Luego asignamos este nuevo Physic Material al Sphere Collider del baloncesto, presionamos Play, y... notamos que la pelota no rebota.

Esto se debe a que, por defecto, la capacidad de rebote de un nuevo Physic Material está establecida en 0, como podemos ver al seleccionar dicho objeto y observar sus pocas propiedades en el Inspector.

El Physic Material tiene dos propiedades principales: "Bounciness" y "Friction," que pueden ajustarse para crear un comportamiento de rebote más o menos realista; por ejemplo, aumentar la "Bounciness" puede aumentar la fuerza del rebote, mientras que aumentar la fricción puede disminuir la distancia recorrida después de cada rebote.

Así que intentemos configurar Bounciness a 1 (valor máximo para este campo) e iniciar el juego: ¡esta vez, la pelota rebota un par de veces antes de detenerse!

El comportamiento es realista, pero ¿cómo podemos hacer que la pelota rebote más?

Podemos actuar, por ejemplo, sobre los parámetros de Friction y, sobre todo, en los dos parámetros Combine: estos parámetros determinan cómo combinar los parámetros físicos de dos objetos cuando entran en contacto.

El valor predeterminado para Bounce Combine es Average, por lo que promediará entre el baloncesto (para el cual configuramos Bounciness a 1) y el cubo subyacente, que no tiene un Physic Material y, por lo tanto, será visto por Unity como 0, así que el valor final de Bounce será en realidad 0.5.

Si cambiamos Bounce Combine a Maximum, esta vez la Bounciness real en juego será 1 y la pelota rebotará mucho más...

... ¡pero ahora el problema es que seguirá rebotando mucho más!

En realidad, es un comportamiento extraño; aparentemente, para mantener rebotes constantes, el valor de Bounciness debe ser 0.965... no me preguntes por qué.

Obviamente, en la simulación de rebotes, la superficie también es importante: así que necesitamos proporcionar un Physic Material al Cubo (pero lo mismo ocurre con suelos, paredes y otros objetos hechos de diferentes materiales y, por lo tanto, con diferentes propiedades físicas) y configurar su Bounciness adecuadamente...

... pero esto se lo dejo a ustedes: ¡prueben varias combinaciones, con diferentes valores de Bounciness, Friction, y Combine!

¡Eso es todo por este tutorial! ¡Nos vemos pronto!

Buscar en los Tutoriales

Ingresa una frase o varias palabras clave separadas por comas para buscar.

Modelos 3D, tutoriales y recursos de gráficos por computadora de Francesco Milanese. Las licencias de uso de los modelos 3D se pueden adquirir en las tiendas externas enlazadas en sus respectivas páginas, de acuerdo con las condiciones de licencia aplicables. Francesco Milanese — Número de IVA: 06321250877. Contacto: info@francescomilanese.com


POLÍTICA EXTENDIDA DE PRIVACIDAD Y UTILIZACIÓN DE COOKIES