Primeros pasos con la física en Unity

Mi asignatura más débil en la escuela era Física y la causa de muchas pesadillas cuando se acercaban los exámenes. Mucho Mucho Mucho…….. años después, la física todavía no es mi punto fuerte, así que decidí construir una máquina de Rube Goldberg.

Para cualquiera que no sepa qué es esto, aquí está la explicación de Wikipedia:

Una máquina Rube Goldberg es una máquina diseñada intencionalmente para realizar una tarea simple de manera indirecta y demasiado complicada. A menudo, estas máquinas consisten en una serie de dispositivos simples que se conectan entre sí para producir un efecto dominó, en el que cada dispositivo activa el siguiente y el objetivo original se logra solo después de muchos pasos.

Aquí está mi experiencia al crearlo, y no fue tan simple como pensé, aunque son literalmente solo componentes físicos que se aplican a Game Objects, ¡sin codificación en absoluto!

Configuración del proyecto y la idea de Unity

  • Creó un nuevo proyecto 3D
  • Creó una nueva escena
  • Creé mis varias carpetas (mi ocd para tener todo en su lugar)
  • Luego dibujé en una buena corteza de árbol vieja (papel) cuál debería ser el patrón.
    • que reacciones quiero
    • como quiero que fluya la pelota,
    • ¿Cómo debe la pelota empezar y entrar en escena y,
    • Cuál debe ser el resultado final.

idea-aproximada.gif

  • También utilicé algunos recursos del siglo XXI y busqué en Google algunas ideas sobre cómo quiero que funcione mi Rube Goldberg Machine.
  • Entonces, en teoría, esta era mi idea de cómo quería que funcionara mi máquina:
    • La bola cae y aterriza en la plataforma declinada
    • La bola rueda hacia abajo y aterriza en el siguiente nivel plano con bisagras
      • Ahora aquí, la pelota puede rodar hacia la derecha y golpear una pared con bisagras.
        • Empujando un bloque en la parte superior de la pared
        • Empujar una segunda bola fuera del nivel
        • Bajando algunos niveles
        • Golpear el nivel plano articulado anterior
        • Rueda hacia abajo y cae al último nivel
        • Se enrolla en fichas de dominó que hacen que las fichas de dominó se caigan
        • Y luego cae al suelo
      • O
        • Muro con bisagras para minusválidos
        • Las bolas ruedan por el nivel
        • Cae al nivel inferior
        • Rueda hacia abajo y cae al último nivel
        • Se enrolla en fichas de dominó que hacen que las fichas de dominó se caigan
        • Y luego cae al suelo

Construye la escena

  • Con mi dibujo, ahora podía planificar qué activos y objetos de juego necesitaba.
  • Colocar los diferentes niveles uno encima del otro, configurar las paredes, los niveles declinados, etc., me llevó la mayor parte del tiempo que solía construir este proyecto de prueba.
  • Toda la escena es literalmente, planos, cubos y esferas.
  • Lo mantuve súper simple porque quería centrarme en la parte de la física.
  • Creo un nuevo material para cada objeto al:
    • Hacer clic derecho en cualquier parte del área del proyecto
    • Haga clic en Crear
    • Haga clic en Material
    • Para este ejercicio, literalmente solo cambio el color de Albedo en Mapas principales

material-sombra.png

  • Arrastré el material recién creado a mi objeto Juego en el componente Mesh Renderer

cambiando-material.png

  • Así es como se veía la idea construida en bruto

rube-version-1.png

Adición de física de bisagras

  • Lo primero que necesitaba la física eran las bolas.
  • Agregué Rigidbody a cada bola y dejé la configuración por defecto

bola-cuerpo-rigido.png

  • Coloqué la pelota en el aire y presioné el botón de reproducción para poder probar que la física de las pelotas funcionaba.
  • Luego elegí en qué gameobject quería tener el componente de articulación articulada, que era el nivel más largo de esta escena.
  • Agregué el componente por
    • Seleccionó el objeto
    • hizo clic en agregar componente
    • Mecanografiado en articulación de bisagra
    • Lo seleccioné.

junta-bisagra.png

  • Nuevamente probé para ver cuál sería el efecto……. nada……. nada estaba pasando
  • Después de jugar con la configuración de la articulación de la bisagra por un tiempo, me di cuenta de que el valor del eje en el que la bisagra debería moverse era incorrecto.
  • Establecer la configuración del eje en Z en 1 y en X e Y en 0 creó el efecto de sube y baja que estaba buscando.
  • Dejé todas las demás configuraciones como predeterminadas.

bisagra-joint-settings.png

  • Hasta ahora, tengo una pelota que cae sobre un nivel, rueda hacia abajo y luego cae sobre mi nivel con bisagras.
  • El problema que estaba surgiendo era que mi balancín caía hacia la izquierda, cuando necesitaba que bajara hacia la derecha para evitar que la bola se saliera por el borde y fallara por completo las fichas de dominó.

Tengo la sensación de que esto tiene que ver con que el peso de los objetos del juego (nivel) no se disperse por igual como una balanza bien equilibrada, pero no quería perder demasiado tiempo resolviendo este problema.

  • Entonces, como una solución rápida, agregué un cubo a la derecha del nivel del balancín para equilibrar el peso y obligué a mi bola a rodar hacia la derecha.
  • Mientras la pelota rueda hacia la derecha, se vuelve más pesada a la derecha y, por lo tanto, hace que el balancín abra un espacio entre el cubo, la pared y el siguiente nivel por el que la pelota puede caer.

arreglo-rápido.png

  • Finalmente, la bola rueda hasta el nivel más bajo y golpea las fichas de dominó antes de caer al suelo.

resultado-final-version-1.png

Adición del componente Bisagra a “Hammer Wall”

  • La otra opción con la que estaba jugando era quitar la articulación de la bisagra del nivel más largo y agregarla a la pared amarilla.
  • Verá en el siguiente diagrama que esta pared tiene una “cabeza de martillo” en la parte superior, con otra bola (componente de cuerpo rígido) colocada frente a ella.
  • La bola 1 cae del cielo,
  • Se baja un nivel,
  • Corre hacia el siguiente nivel,
  • Golpes contra la pared amarilla,
  • Empuja la pared
  • Empuja el martillo hacia adelante
  • Empujando la bola 2 fuera del nivel superior

muro-martillo.png

  • Bola rueda por todos los niveles
  • llega al suelo
  • La bola 1 todavía está rodando mientras la bola 2 está haciendo su trabajo, y golpeará las fichas de dominó como en el ejemplo 1

Agregar unión de resorte a GameObject

  • Mientras hacía pequeños ajustes, decidí cambiar la forma en que mi bola caía y quería probar la junta de resorte.
  • Creé una caja para albergar la pelota, con cubos.

pelota-1.png
resorte-junta.png

  • Agregué el componente de unión de resorte al objeto del juego de caja.
  • Se agregó el componente de cuerpo rígido a este objeto de juego.
  • Dejé todas las configuraciones por defecto excepto congelar la rotación:
    • En la configuración de componentes de cuerpo rígido
    • Restricciones
    • Marque las 3 casillas para el eje XYZ junto a la rotación

congelar-rotación.png

  • Ahora rebota como un resorte
  • Giré toda la caja un poco hacia adelante para que la pelota rebote en el inicio y en la plataforma.
  • Cuanto más alto coloques la pelota, más fuerza aplicará a la caja y, por lo tanto, el efecto de resorte será más grande y se proyectará o rebotará más alto.

efecto-primavera.png

Problemas encontrados

  • El componente de física no funciona

    • Compruebe en qué eje está marcando como 1
    • Verifique que un objeto que tiene el componente de física adjunto no esté en contacto directo con otro sólido (algo con un límite de malla). Esto hará que su objeto que tiene el componente físico adjunto actúe de manera muy extraña, como si el mío se sacudiera incontrolablemente.
  • Desde el momento en que comenzó la escena, la física comenzó a simular, en lugar de solo simular al ser tocado.

    • desmarque la gravedad en el componente de cuerpo rígido. Esto hará que el objeto solo reaccione cuando interactúe con él.
  • El objeto del juego con la articulación Spring rebotaba por todas partes

    • Congelar la rotación para XY y Z.
    • El efecto de rebote será más como un resorte y no como una cuerda elástica.
  • La bola está rodando por los bordes de los niveles.

    • No tenía bordes en mis niveles. Agregué algunos bordes para mantener la pelota en el camino si se desvía hacia el costado de las plataformas.

Terminando

Mientras escribía este blog, continué ajustando cosas aquí y allá, ya que parece que estoy disfrutando este desafío mucho más de lo que esperaba. Agregué algunas cajas, resortes y repisas más, suavicé algunos efectos y agregué más fichas de dominó.

Aquí está mi resultado final que no voy a dejar de refinar ya que tengo grandes planes para lo que comenzó siendo un pequeño proyecto.

Captura de pantalla 2019-07-16 a las 13:31:23.png

Similar Posts

Leave a Reply

Your email address will not be published.