Tutoriales intermedios

Crear objetos en movimiento

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Objetos en movimiento son aquellos que se mueven en uno o más ejes dentro del espacio 3D. Usando el poder incorporado del motor de simulación de Roblox, puedes hacer que los objetos se muevan e interactúen con su entorno de una manera que emula el comportamiento físico del mundo real, que es familiar e intuitivo para los jugadores, como la gravedad, la aerodinámica y la fricción.

Usando el archivo Objetos en Movimiento .rbxl como referencia, este tutorial explica cómo las fuerzas físicas impactan el movimiento lineal en Studio, y te muestra varias técnicas para mover objetos del punto A al punto B en tus experiencias con diferentes comportamientos de movimiento, incluyendo orientaciones sobre:

  • Usar un constraint de mover LinearVelocity para mover un ensamblaje completo a una velocidad lineal constante.
  • Usar un PrismaticConstraint para restringir un ensamblaje a un único eje y moverlo a una velocidad lineal constante relativa a un punto en el espacio 3D.
  • Usar el método ApplyImpulse para mover un ensamblaje con un impulso inicial de fuerza de modo que el ensamblaje desacelere lentamente con el tiempo.

Movimiento lineal y fuerzas físicas

Roblox Studio es un motor de simulación del mundo real que emula el comportamiento físico en tiempo real, por lo que, para predecir cómo se comportan los objetos en movimiento lineal en las experiencias, es importante tener una comprensión general de cómo se mueven los objetos en la vida real con movimiento lineal.

Movimiento lineal es el movimiento a lo largo de un eje. Por ejemplo, cuando un bloque tiene movimiento lineal, se mueve a lo largo de un eje establecido.

Un bloque gris frente a un fondo oscuro. El eje de movimiento está destacado, y se enfrenta hacia la izquierda de la pantalla para significar que el bloque se moverá a lo largo del eje Y del mundo.

El movimiento lineal no puede existir sin fuerzas físicas externas empujando o tirando de los objetos. Según la primera ley de movimiento de Newton, los objetos estacionarios permanecen estacionarios y los objetos en movimiento permanecen en movimiento con una velocidad constante a menos que sean afectados por una fuerza externa. Por ejemplo, un bloque estacionario permanece estacionario a menos que una fuerza física como el viento lo empuje a moverse.

Fuerza es la medida de la dirección y magnitud de un empuje o tirón físico que hace que los objetos cambien su velocidad lineal a lo largo de un eje. Un cambio en la velocidad se conoce como aceleración. Este concepto es particularmente importante para que los objetos se muevan en Studio; cuanta más fuerza apliques a los objetos, más rápido aceleran.

Esto se debe a que la fuerza necesita ser mayor que cualquier fuerza física que empuje en contra del objeto, como la gravedad o la fricción. Por ejemplo, si colocas el bloque sobre una placa de metal, la fuerza física del viento necesita superar la cantidad de fricción de la placa de metal para seguir acelerando el bloque. Si la fuerza del viento no es mucho mayor que la fricción de la placa de metal, el bloque acelera, pero más lentamente que en el ejemplo anterior.

Un bloque gris frente a una placa de metal gris oscuro con un diagrama que significa que el bloque tendrá una fricción de placa para ralentizar el movimiento del bloque debido al viento.

Velocidad lineal es la medida del movimiento de un objeto, o cuán rápido cambia la posición de un objeto a lo largo de un eje durante un período de tiempo. Studio mide la velocidad lineal de acuerdo a cuántos studs se mueve un objeto por segundo. Los studs son las unidades físicas primarias de Roblox para medir longitud, y cada stud equivale a aproximadamente 28 cm en el mundo real.

Un bloque gris frente a la textura de cuadrícula 4x4 de la base por defecto. Un rectángulo de cubo de un solo stud está destacado.

Entender la velocidad lineal es importante para diseñar el juego en tus experiencias porque te ayuda a determinar cuánta fuerza necesitas para lograr una velocidad particular para tus objetos en movimiento. Por ejemplo, cuando quieres propulsar objetos hacia arriba, es importante considerar cómo debes ajustar tu fuerza para superar la gravedad dentro del entorno, de modo que los objetos se muevan con precisión.

Las siguientes secciones profundizan más en estos conceptos mientras aprendes a mover objetos a una velocidad lineal constante o inicial con la fuerza necesaria para superar cualquier fuerza física opuesta dentro del entorno. A medida que revisas estos conceptos de física con las próximas técnicas, puedes predecir con más precisión cómo ajustar los valores de propiedad para lograr cualquier comportamiento ideal de movimiento lineal en Studio.

Mantener una velocidad lineal constante

Para que un objeto alcance y mantenga una velocidad lineal constante, necesita una fuerza que supere cualquier fuerza física opuesta que desacelere la velocidad lineal del objeto o haga que el objeto permanezca estacionario. Por ejemplo, si quieres que un objeto tenga una velocidad lineal de [0, 12, 0] en Studio, necesitas suficiente fuerza para que el objeto alcance y mantenga 12 studs por segundo a lo largo del eje Y en su entorno.

La cantidad de fuerza necesaria no solo depende de las fuerzas físicas opuestas dentro del entorno mismo, como la gravedad y la fricción, sino también del objeto en sí. Por ejemplo, si tienes dos objetos de la misma forma que se mueven en el mismo eje, el objeto con una mayor masa requiere más fuerza para lograr la misma aceleración lineal.

La pequeña parte del triángulo tiene una pequeña cantidad de masa, por lo que necesita menos fuerza para lograr la misma aceleración.
La parte del triángulo grande tiene una gran cantidad de masa, por lo que necesita más fuerza para lograr la misma aceleración.

Las siguientes subsecciones utilizan ensamblajes de diferentes formas y tamaños para enseñarte cómo mover ya sea un objeto completo o solo una parte del objeto a una velocidad lineal constante. A medida que experimentas con diferentes valores de propiedad, aprenderás a estimar la cantidad máxima de fuerza que necesitas para los ensamblajes en tus propias experiencias.

Usar constraints de LinearVelocity

Los objetos LinearVelocity son un tipo de constraint de mover que aplican fuerza a un ensamblaje completo para mantener una velocidad lineal constante. Al no bloquear la posición del ensamblaje a un eje durante su movimiento, el ensamblaje es libre de rotar al colisionar con otros objetos en el espacio 3D. Este tipo de movimiento conduce a escenarios de juego sorprendentes que son más difíciles de predecir para los jugadores.

A medida que las hojas de lirio chocan entre sí, cambian de orientación pero continúan fluyendo por el río a una velocidad lineal constante.

Para comenzar a mover el ensamblaje, el constraint LinearVelocity necesita saber:

  • El punto y la dirección positiva o negativa para aplicar una fuerza.
  • La cantidad de studs que deseas que se mueva el ensamblaje por segundo.
  • La cantidad máxima de fuerza que el motor puede aplicar para que el ensamblaje alcance la velocidad lineal constante.

Para demostrar este proceso, vas a configurar una hoja de lirio con un adjunto del cual un LinearVelocity constraint hace referencia para mover la hoja de lirio 15 studs por segundo a lo largo del eje X negativo del mundo a una velocidad lineal constante.

Una vista cercana de una hoja de lirio. La ayuda visual del constraint de la hoja de lirio es visible y apunta hacia la derecha, que es el eje X negativo del mundo.

Añadir adjunto

Puedes especificar el punto para aplicar fuerza agregando un objeto Attachment al ensamblaje, y luego configurando la posición del adjunto en el espacio 3D. La experiencia de Objetos en Movimiento coloca un adjunto en el centro de la hoja de lirio para que el constraint pueda mover la malla desde el adjunto a lo largo de un eje particular.

Los adjuntos incluyen ayudas visuales para ayudarte a visualizar sus ejes de movimiento. La flecha amarilla denota el eje principal del adjunto, y la flecha naranja denota el eje secundario del adjunto. Aunque ninguno de los ejes de movimiento influye en el movimiento de la hoja de lirio en los pasos de esta técnica, es importante entender estas ayudas visuales para futuras referencias porque pueden ayudarte a determinar el comportamiento ideal para diferentes tipos de constraints, como el PrismaticConstraint en la próxima técnica.

Las flechas de la ayuda visual de un adjunto. La flecha amarilla que significa el eje principal del adjunto apunta hacia arriba, y la flecha naranja que significa el eje secundario del adjunto apunta hacia la derecha.

Para añadir un adjunto:

  1. En la ventana Explorer, expande la carpeta LinearVelocityExample, y luego expande su modelo hijo LilyPad_DIY.

  2. Inserta un adjunto en la malla Pad.

    1. Pasa el cursor sobre la malla y haz clic en el botón ⊕. Se muestra un menú contextual.
    2. En el menú, inserta un Attachment. El adjunto se muestra en el centro de la parte.
    3. Cambia el nombre del adjunto a MoveAttachment.
    Una vista cercana de una hoja de lirio y su ayuda visual de adjunto. El eje principal apunta lejos de la cámara, y el eje secundario apunta hacia arriba.

Configurar constraint

Ahora que tu malla tiene un punto fijo para mover la hoja de lirio, puedes configurar las propiedades de un constraint LinearVelocity para especificar la dirección y magnitud para la velocidad lineal constante, la cantidad de studs que deseas que la malla se mueva por segundo, y la cantidad máxima de fuerza que el motor puede aplicar para que la malla alcance una velocidad lineal constante.

La experiencia de Objetos en Movimiento aplica hasta 5000 Rowtons de fuerza constante para mover la hoja de lirio 15 studs por segundo a lo largo del eje X negativo del mundo a una velocidad lineal constante. Los Rowtons son las unidades físicas primarias de Roblox para medir fuerza. Para consultar las unidades físicas de Roblox y cómo se convierten a unidades métricas, consulta Unidades de Roblox.

Para configurar un constraint LinearVelocity:

  1. Para hacer visible el constraint en el viewport para que puedas referenciar su dirección lineal, habilita Mostrar Detalles del Constraint desde el menú Ver de Studio.

  2. Inserta un constraint LinearVelocity en la malla Pad.

    1. En la ventana Explorer, pasa el cursor sobre la malla, y luego haz clic en el ícono ⊕. Se muestra un menú contextual.
    2. En el menú contextual, inserta LinearVelocity.
  3. Asigna el adjunto de la malla al nuevo constraint.

    1. En la ventana Explorer, selecciona el constraint.
    2. En la ventana Properties,
      1. Establece Attachment0 en MoveAttachment.
      2. Establece MaxForce en 5000 para aplicar hasta 5000 Rowtons de fuerza constante para lograr la velocidad lineal objetivo.
      3. Deja RelativeTo en World para mover la hoja de lirio en relación a la posición y orientación del mundo.
      4. Establece VelocityConstraint en Line para restringir la fuerza a lo largo de una línea desde el adjunto.
      5. Establece LineDirection en -1, 0, 0 para mover la hoja de lirio a lo largo del eje X negativo del mundo. Ten en cuenta que si establecieras esta propiedad en 1, 0, 0, la hoja de lirio se movería a lo largo del eje X positivo del mundo.
      6. Establece LineVelocity en 15 para mover la hoja de lirio 15 studs por segundo.
    Una vista cercana de una hoja de lirio y su ayuda visual de constraint que apunta hacia la derecha, o el eje X negativo del mundo.
  4. Verifica que la cantidad de fuerza que estableciste mueva la malla 15 studs por segundo a lo largo del eje X negativo del mundo.

    • Selecciona el modo de simulación Run desde el menú desplegable del mezzanine y haz clic en el botón Play para comenzar. Studio simula la experiencia en la posición actual de la cámara sin tu avatar en el espacio 3D.

      Opción Run en el menú desplegable de modos de prueba del mezzanine de Studio.

Usar constraints de PrismaticConstraint

Los objetos PrismaticConstraint son un tipo de constraint mecánico que crean una unión rígida entre dos adjuntos, permitiendo que sus ensamblajes padres se muevan a lo largo de un eje relativo entre sí. Al bloquear la posición de ambos ensamblajes a un solo eje, cada ensamblaje solo puede rotar si rotan juntos en la misma dirección.

Este tipo de movimiento lleva a escenarios de juego estables que son más fáciles de predecir para los jugadores. Por ejemplo, la experiencia de Objetos en Movimiento utiliza objetos PrismaticConstraint para mover plataformas de troncos que los jugadores pueden usar para cruzar cuidadosamente un gran río.

Cuando estableces PrismaticConstraint.ActuatorType en Motor, este constraint aplica fuerza en los dos adjuntos con el objetivo de que los adjuntos alcancen y mantengan una velocidad lineal constante. Si anclas uno de los ensamblajes padres de los adjuntos, la fuerza continúa moviendo el ensamblaje no anclado a una velocidad lineal constante mientras que el ensamblaje anclado permanece estacionario.

Para comenzar a mover el ensamblaje, el constraint PrismaticConstraint necesita saber:

  • El punto y la dirección positiva o negativa para aplicar una fuerza.
  • La cantidad de studs que deseas que se muevan los adjuntos por segundo.
  • La cantidad máxima de fuerza que el motor puede aplicar para que los adjuntos y sus ensamblajes padres alcancen una velocidad lineal constante.

Para demostrar este proceso, configurarás un ensamblaje de troncos con dos objetos que tienen adjuntos hijos a los cuales un PrismaticConstraint hace referencia para mover el tronco a 40 studs por segundo a lo largo del eje X negativo del mundo a una velocidad lineal constante.

Una vista cercana de un tronco marrón sobre un río. La ayuda visual del constraint del tronco es visible y apunta hacia la derecha, o el eje X negativo del mundo.

Configurar adjuntos

Puedes especificar la dirección para mover un objeto particular dentro de un ensamblaje agregando dos objetos Attachment al ensamblaje, y luego configurando su alineación y orientación en el espacio 3D. La experiencia de Objetos en Movimiento alinea dos adjuntos a lo largo del eje X del mundo cerca de la posición en la que el tronco no anclado se superpone con la parte anclada, y orienta el eje principal de cada adjunto para que enfrente el eje X negativo del mundo.

Cuando configures tu constraint PrismaticConstraint en la siguiente sección, moverá el tronco en relación a la parte anclada. En otras palabras, el tronco se alejará de la parte estacionaria que no puede moverse porque está anclada en el espacio 3D.

Para configurar adjuntos para el constraint prismatic:

  1. En la ventana Explorer, expande la carpeta PrismaticConstraintExample, y luego expande su modelo hijo Log_DIY.

  2. Inserta un adjunto en la malla Log.

    1. Pasa el cursor sobre la malla y haz clic en el botón ⊕. Se muestra un menú contextual.
    2. En el menú, inserta un Attachment. El adjunto se muestra en el centro de la parte.
    3. Cambia el nombre del adjunto a LogAttachment.
    Una vista cercana de un tronco y su ayuda visual de adjunto. El eje principal apunta hacia la cámara, y el eje secundario apunta hacia arriba.
  3. Usando el mismo proceso, inserta un adjunto en la parte Anchor, y luego renombra el adjunto AnchorAttachment.

    Una vista cercana de un tronco y dos ayudas visuales de adjuntos. El eje principal de la nueva ayuda visual de adjunto apunta hacia la derecha, y el eje secundario apunta hacia arriba.
  4. Usando la herramienta Selector de Vista como referencia para las coordenadas del mundo, rota LogAttachment y AnchorAttachment hasta que el eje principal de cada adjunto apunte hacia el eje X negativo del mundo.

    Una vista cercana de un tronco y su ayuda visual de adjunto. Ambos adjuntos tienen un eje principal que apunta hacia la derecha, y un eje secundario que apunta hacia arriba.
  5. Reposiciona AnchorAttachment para que ambos adjuntos estén alineados en el eje X del mundo.

    Una vista cercana de un tronco y sus ayudas visuales de adjunto que ahora están posicionadas horizontalmente. Ambos adjuntos tienen un eje principal que apunta hacia la derecha, y un eje secundario que apunta hacia arriba.

Configurar constraint

Ahora que tus adjuntos están alineados en el mismo eje y enfrentan la misma dirección que quieres que se mueva el tronco, puedes configurar las propiedades de un constraint PrismaticConstraint para especificar si se aplica la velocidad lineal constante objetivo en la dirección positiva o negativa del eje principal de cada adjunto, la cantidad de studs que deseas que se muevan los adjuntos por segundo, y la cantidad máxima de fuerza que el motor puede aplicar para que el tronco alcance una velocidad lineal constante.

Aunque puedes elegir diferentes valores para tus propios casos de uso, la experiencia de Objetos en Movimiento aplica hasta 50000 Rowtons de fuerza constante para mover los adjuntos 40 studs por segundo a lo largo del eje X negativo del mundo a una velocidad lineal constante. Sin embargo, dado que el adjunto ancla está en un objeto anclado, solo el adjunto del tronco puede moverse.

Para configurar un constraint prismatic:

  1. Inserta un objeto PrismaticConstraint en la malla Log.

    1. En la ventana Explorer, pasa el cursor sobre la malla, y luego haz clic en el ícono ⊕. Se muestra un menú contextual.
    2. En el menú contextual, inserta un PrismaticConstraint.
  2. Asigna los adjuntos del tronco al nuevo constraint de modo que el tronco se mueva en relación a la parte bloqueada anclada.

    1. En la ventana Explorer, selecciona el constraint.
    2. En la ventana Properties,
      1. Establece Attachment0 en AnchorAttachment.
      2. Establece Attachment1 en LogAttachment. El constraint se muestra en el viewport.
    Una vista cercana de un tronco y su ayuda visual de constraint. No tiene una ayuda visual de flecha porque aún no tiene una velocidad establecida.
  3. En la ventana Explorer, selecciona el constraint, luego en la ventana Properties:

    1. Establece ActuatorType en Motor. Se mostrarán nuevos campos de propiedad.
    2. Establece MotorMaxForce en 50000 para aplicar hasta 50000 Rowtons de fuerza constante para lograr la velocidad lineal objetivo.
    3. Establece Velocity en 40 para mover el tronco 40 studs por segundo.
    Una vista cercana de un tronco y su ayuda visual de constraint que apunta hacia la derecha, o el eje X negativo del mundo.
  4. Verifica que la cantidad de fuerza que estableciste mueva el tronco 40 studs por segundo a lo largo del eje X negativo del mundo.

    • Selecciona el modo de simulación Run desde el menú desplegable del mezzanine y haz clic en el botón Play para comenzar. Studio simula la experiencia en la posición actual de la cámara sin tu avatar en el espacio 3D.

      Opción Run en el menú desplegable de modos de prueba del mezzanine de Studio.

Aplicar una fuerza lineal inicial

Otra forma de cambiar la velocidad lineal de un objeto es aplicando un impulso de fuerza. Después del impulso de fuerza, el objeto desacelera hasta volverse estacionario si hay una fuerza opuesta como la fricción, o permanece en movimiento con velocidad lineal constante si no hay fuerzas opuestas.

Esta técnica es útil para mover objetos después de un evento significativo en el juego, como una explosión o colisión impactante, porque proporciona retroalimentación instantánea a los jugadores. Para demostrarlo, la siguiente subsección te enseñará cómo lanzar el personaje de un jugador hacia arriba hacia el cielo cuando colisiona con una plataforma de salto con un impulso inicial que puedes adaptar con nuevos valores para cumplir con tus propios requisitos de juego.

Usar ApplyImpulse

El método ApplyImpulse aplica fuerza a un ensamblaje completo para obtener una velocidad lineal inicial antes de desacelerar hasta detenerse cuando hay fuerzas opuestas. Para comenzar a mover el ensamblaje, el método necesita saber:

  • El ensamblaje a mover.
  • El eje para aplicar fuerza para alcanzar una velocidad lineal inicial.
  • La cantidad de fuerza a aplicar en cada eje.

Puedes definir todos estos valores en un script. Por ejemplo, el script de muestra define el ensamblaje a mover como el objeto Humanoid del personaje del jugador, luego aplica un impulso de fuerza de 2500 Rowton-segundos para lanzar al jugador hacia arriba en el eje Y positivo del mundo. Ten en cuenta que los personajes de los jugadores tienen diferentes cantidades de masa, por lo que es posible que debas aumentar y equilibrar esta fuerza para lanzar a cada jugador sin lanzar a los personajes de jugadores con menor masa demasiado alto.

Para mover un ensamblaje utilizando ApplyImpulse:

  1. En la ventana Explorer, expande la carpeta ApplyImpulseExample, y luego expande su modelo hijo JumpPad_DIY.

  2. Inserta un script en la parte JumpPad.

    1. Pasa el cursor sobre la parte y haz clic en el botón ⊕. Se muestra un menú contextual.
    2. En el menú, inserta un Script. El adjunto se muestra en el centro de la parte.
    3. Cambia el nombre del script a JumpScript.
  3. Reemplaza el código por defecto con el siguiente código:


    local volume = script.Parent
    local function onTouched(other)
    local impulse = Vector3.new(0, 2500, 0)
    local character = other.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and other.Name == "LeftFoot" then
    other:ApplyImpulse(impulse)
    end
    end
    volume.Touched:Connect(onTouched)
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.