Unity 2D Joints Slider, Relative, Spring y Friction Joints

Lo que vas a crear

En el tutorial anterior, comenzamos a ver cómo funcionan las articulaciones de física 2D en Unity y cómo usarlas para lograr grandes efectos (sin sacrificar el rendimiento del juego). En ese tutorial, cubrimos la distancia, la bisagra, el objetivo y las juntas fijas.

Hoy, continuaremos observando las juntas deslizantes, relativas, de resorte y de fricción.

Junta deslizante

Esta articulación permite que un objeto de juego controlado por la física de cuerpos rígidos se deslice a lo largo de una línea en el espacio. El objeto puede moverse en cualquier lugar a lo largo de la línea en respuesta a colisiones, fuerzas o por una fuerza motora. Por lo tanto, su próximo obstáculo será una plataforma móvil que se mueve continuamente entre dos puntos fijos.

Crea un nuevo GameObject vacío, llámalo MovingPlatform, y establecer el Posición del objeto a72.36, 1.57, 0). A continuación, necesitas crear tres plataformas diferentes. Ve a la carpeta de Plataformas y arrastra tres sprites. Plataforma1Plataforma6, y Plataforma12 en el MovingPlatform.

La posición de Plataforma1 debería ser (0, -1, 0), mientras que para Plataforma6 es (14, -1, 0), y para Plataforma12 (20.3, -1, 0). Después de colocar los sprites, tu escenario debería verse así:

Ahora que tiene todos los recursos en su lugar, es el momento de crear y configurar el Slider Joint 2D. Seleccionar Plataforma6 y agrega un Junta deslizante 2D componente a ella La unidad agregará automáticamente una RigidBody 2D también. Habilitar Congelación de rotación Z también. Ahora, seleccione Plataforma1 y agrega un RigidBody 2D. Habilitar las opciones Es cinemático y Congelación de rotación Z.

Ahora, seleccione Plataforma6, eliminar el Efecto de plataforma 2D componente, y deshabilitar la opción Utilizado por efector sobre el Box Collider 2D componente.

Los campos disponibles en el Junta deslizante 2D componente son similares a los que viste en el Bisagra Conjunta, pero con algunos cambios semánticos. Debido a que las juntas deslizantes operan en movimiento lineal en lugar de angular, Velocidad del motor Se mide en unidades por segundo. Del mismo modo, en lugar de límites de ángulo, puede especificar límites de traducción. Límites de traducción funcionan de la misma manera que los límites de ángulo, excepto que especifican la distancia que el cuerpo rígido puede estar desde el Ancla conectada punto.

Giro Habilitar colisión en, ya que desea que la plataforma colisione con las plataformas conectadas. Arrastrar Plataforma1 al Cuerpo rígido conectado. Selecciona el Ancla conectada a (-0.082, -0.0646). Habilitar Usar motor y establecer el Velocidad del motor a -2.

Si presionas Jugar, Verás que la plataforma central se está moviendo. Sin embargo, una vez que ha llegado a la plataforma más cercana, se detiene. Para solucionar este problema, deberá agregar el MovingPlatform guión para Plataforma6. Arrastrar Plataforma12 a Plataforma APlataforma1 Al campo Plataforma B.


prensa Jugar, y verificar que todo funcione como se espera. Ahora que el obstáculo está listo, cree una casa prefabricada y colóquelo en el Obstáculos carpeta.

Articulación relativa

Relative Joint 2D permite que dos objetos de juego controlados por la física de cuerpos rígidos mantengan una posición basada en la ubicación del otro. Para implementar esta articulación, crearás dos plataformas. Uno está fijo en el espacio, mientras que el otro se moverá a su alrededor, creando un obstáculo circular..

Crea un nuevo GameObject vacío en el Posición (102.7, 4.2, 0) y llámalo Relativo. Dentro de Activos \ JuegosAssets \ Plataformas carpeta, arrastrar Plataforma11 en el Relativo GameObject y cambia su nombre a Plataforma2. Cambiar su Posición a (-.45, -5.97, 0) y el Escala a (.5, .5, 1). Agrega un Rigidbody 2D componente y compruebe el Es cinemático propiedad. Se crea la primera parte del obstáculo, así que ahora procedamos y agreguemos la segunda plataforma..

Añade el Plataforma de metal sprite (dentro de la Activos libres \ Sprites carpeta) en la Relativo GameObject, nombralo Plataforma, cambiar el Orden en la capa a 2, y establecer el Posición a (-.37, 1.23, 0). Agrega dos componentes: a Rigidbody 2D y un Box Collider 2D. Cambiar el tamaño del Box Collider 2D a (2,32, 0,55).

Ahora agregue un Articulación relativa 2D componente a la Plataforma. Dentro de Cuerpo rígido conectado deberías colocar Plataforma2.

los Fuerza maxima La propiedad establece el desplazamiento lineal (línea recta) entre objetos unidos: un valor alto (de hasta 1,000) utiliza una fuerza alta para mantener el desplazamiento. los Max Torque Establece el movimiento angular (rotación) entre objetos unidos. Establezca ambos valores en 200. los Desplazamiento de configuración automática debe ser revisado.

Si ejecutas tu juego, verás que nada se mueve. Necesitas hacer un paso final que involucre agregar el Punto Relativo (dentro de Guiones carpeta) script en el Plataforma GameObject. Jugar El juego y prueba si todo funciona como debe..

La configuración conjunta final es:

Ahora que el obstáculo está listo, cree un prefab de él colocando el GameObject en el Obstáculos carpeta.

Junta de primavera

El componente Spring Joint 2D permite que dos objetos de juego controlados por la física de cuerpos rígidos se unan como si fuera un resorte. El resorte aplicará una fuerza específica a lo largo de su eje entre los dos objetos, intentando mantenerlos a cierta distancia..

Para utilizar esta articulación, creará un puente flotante compuesto por nubes; Las nubes se unirán a otra gran nube utilizando Spring Joint..

Comience creando un GameObject vacío. Nombralo Primavera y establecer su Posición a (120, 10, 0). Añade el Walkaway1 sprite (dentro de la Plataforma carpeta) en la Primavera GameObject. Cambia su nombre a CloudSpring y el Orden en la capa a 1. Agrega un Rigidbody 2D y compruebe el Es cinemático propiedad.

Ahora, vamos a añadir cuatro nuevos sprites. Selecciona el Plataforma9 sprite de la misma carpeta y agrega cuatro de ellos a la Primavera GameObject. Nombra cada objeto PlatSpring01 a PlatSpring04.

Cada PlatSpring debe colocarse en la posición correcta de la siguiente manera:

  • PlatSpring01: -7.63, -12.35, 0

  • PlatSpring02: -2,67, -11,16, 0

  • PlatSpring03: 1.88, -12.44, 0

  • PlatSpring04: 6.77, -12.58, 0

Cambiar el Orden en la capa a 4 para todos PlatSpring objetos. Ahora, para cada PlatSpring necesitas agregar dos componentes: un Rigidbody 2D y uno Junta de resorte 2D. Para el Rigidbody 2D componentes, solo necesitas comprobar la Rotación de congelación sobre el Z eje.

Cuando se agrega el Junta de resorte 2D, crea por defecto un Cuerpo rígido conectado al Escena centrar.

Ese no es el efecto deseado. Por lo tanto, debe adjuntar el CloudSpring GameObject a la Cuerpo rígido conectado de cada PlatSpring.

Al hacerlo, la conexión de la línea verde se actualiza automáticamente y se coloca dentro de la CloudSpring.

Puedes cambiar el Ancla conectada y el Distancia si tu quieres. Sin embargo, en este tutorial solo cambiará la Ancla conectada.

Para cada PlatSpring, cambiar el Ancla conectada en consecuencia:

  • PlatSpring01-4.8, 0

  • PlatSpring02: -1.7, 0

  • PlatSpring031.07, -0.11

  • PlatSpring04: 4.13, -0.11

La configuración completa de PlatSpring01 es el siguiente:

Juega tu juego y prueba si todo está bien colocado y configurado. Ahora que el obstáculo está listo, cree un prefab de él colocando el GameObject en el Obstáculos carpeta.

Articulación de fricción

La unión de fricción 2D conecta objetos controlados por la física de cuerpos rígidos y reduce las velocidades lineales y angulares entre los objetos hasta que llegan a cero (es decir, los frena). Para implementar Friction Joint 2D, creará una plataforma móvil que está conectada a una nube con propiedades físicas.

Comience creando un GameObject vacío. Nombralo FrictionPlatform y establecer su Posición a (133, 5, 0). Añade el Plataforma11 sprite (dentro de la Activos \ Sprites carpeta) en la FrictionPlatform. Cambia su nombre a Apoyo y establecer el Orden en Layer a 1, sus Posición a (0, 0, 0), y es Escala a (.25, .25, 1). También debe agregar un Rigidbody 2D y compruebe el Es cinemático propiedad. Las propiedades restantes deben dejarse en los valores predeterminados.

Ahora, agregue el Plataforma de metal sprite en el FrictionPlatform. Cambiar su Posición a (.31, -8.33, 0), y el Orden en la capa a 3. Con el Plataforma de metal seleccionado, añada un Rigidbody 2D, una Box Collider 2D, y un Efector de plataforma 2D. los Box Collider 2D tamaño debe ajustarse a2,35, 0,5) con Utilizado por efector en, mientras que en el Rigidbody 2D debe comprobar el Posición de congelación Y y el Congelación de rotación Z. Ahora debería tener algo como lo siguiente:

Si juegas el juego y saltas sobre el Plataforma de metal, Notarás que nada se mueve. Vamos a cambiar eso añadiendo un Junta de fricción 2D en el Plataforma de metal. los Cuerpo rígido conectado debe ser llenado por el Apoyo. Para esta articulación, permitiremos que Unity establezca la mejor coordenada de anclaje al habilitar Configurar automáticamente conectado. los Fuerza maxima y Max Torque debiera ser 1, mientras que la Fuerza de rotura y Par de Rotura debiera ser infinito.

Ejecuta tu juego y probemos la articulación de fricción. Ahora que el obstáculo final está listo, cree una prefabulación y colóquelo en el Obstáculos carpeta.

Conclusiones

Con esto concluye la segunda parte del tutorial sobre Unity Joints 2D. Aprendió sobre cuatro juntas, a saber, las juntas deslizantes, relativas, de resorte y de fricción. Con este conocimiento asociado a todo lo que aprendió en la primera parte, ahora puede crear juegos 2D complejos utilizando propiedades físicas de 2D complejas.. 

Si tiene alguna pregunta o comentario, como siempre, no dude en escribir una línea en los comentarios..