Objetos móveis são objetos que se movem em um ou mais eixos dentro do espaço 3D.Usando o poder integrado do motor de simulação do Roblox, você pode fazer com que os objetos se movam e interajam com seu ambiente de uma maneira que simule o comportamento físico do mundo real familiar e intuitivo para os jogadores, como gravidade, aerodinâmica e fricção.
Usando o arquivo Movendo Objetos.rbxl como referência, este tutorial explica como as forças físicas impactam o movimento linear no Studio e mostra várias técnicas para mover objetos de ponto A a ponto B em suas experiências com diferentes comportamentos de movimento, incluindo orientação sobre:
- Usando uma restrição de mover LinearVelocity para mover toda uma montagem em uma velocidade linear constante.
- Usando um PrismaticConstraint para restringir uma montagem a um único eixo e movê-la em uma velocidade linear constante em relação a um ponto no espaço 3D.
- Usando o método ApplyImpulse para mover uma montagem com um impulso inicial de força para que a montagem diminua lentamente ao longo do tempo.
Moção linear e forças físicas
O Roblox Studio é um motor de simulação do mundo real que emula o comportamento físico em tempo real, então, para prever como objetos se movendo linearmente podem se comportar em experiências, é importante ter uma compreensão de alto nível de como os objetos se movem na vida real com movimento linear. Movimento linear é o movimento ao longo de um eixo. Por exemplo, quando um bloco tem movimento linear, ele se move ao longo de um eixo definido.

Moção linear não pode existir sem forças externas e físicas empurrando ou puxando objetos para se mover.De acordo com a primeira lei de movimento de Newton , objetos estacionários permanecem estacionários e objetos em movimento permanecem em movimento com uma velocidade constante, a menos que sejam atingidos por uma força externa.Por exemplo, um bloco estacionário permanece estacionário a menos que uma força física como o vento o empurre para se mover.
Força é a medida da direção e magnitude de um empurrão ou puxão físico que faz com que os objetos mudem sua velocidade linear ao longo de um eixo.Uma mudança na velocidade é conhecida como aceleração .Este conceito é particularmente importante para objetos se moverem no Studio; quanto mais força você aplicar a objetos, mais rapidamente eles aceleram.
Isso ocorre porque a força precisa ser maior do que quaisquer forças físicas empurrando de volta contra o objeto, como a gravidade ou a fricção.Por exemplo, se você colocar o bloco em uma placa de metal, a força física do vento precisa superar a quantidade de atrito da placa de metal para continuar acelerando o bloco.Se a força do vento não for muito maior que a fricção da placa de metal, o bloco acelera, apenas mais lentamente que o exemplo anterior.

Velocidade linear é a medida do movimento de um objeto, ou quão rápido o objeto muda sua posição ao longo de um eixo em um período de tempo.O Studio mede a velocidade linear de acordo com quantos studs um objeto se move por segundo.Os studs são as principais unidades físicas do Roblox para medir comprimento e cada stud equivale a cerca de 28cm no mundo real.

Entender velocidade linear é importante para projetar a jogabilidade em suas experiências porque ajuda você a determinar quanta força você precisa para alcançar uma velocidade específica para seus objetos móveis.Por exemplo, quando você quer impulsionar objetos para cima, é importante considerar como você deve ajustar sua força para superar a gravidade dentro do ambiente para que os objetos se movam com precisão.
As seções a seguir mergulham mais profundamente nesses conceitos à medida que você aprende a mover objetos em uma velocidade constante ou inicial linear com a força necessária para superar quaisquer forças físicas opositoras dentro do ambiente.Ao revisar esses conceitos de física com as técnicas que estão chegando, você pode prever com mais precisão como ajustar os valores das propriedades para alcançar qualquer comportamento de movimento linear ideal no Studio.
Mantenha uma velocidade linear constante
Para que um objeto alcance e mantenha uma velocidade linear constante, ele precisa de uma força para superar quaisquer forças opositoras que desacelerem a velocidade linear do objeto ou causem que o objeto permaneça estático.Por exemplo, se você quiser que um objeto tenha uma velocidade linear de [0, 12, 0] em Studio, você precisa de força suficiente para que o objeto alcance e mantenha 12 metros por segundo ao longo do eixo Y em seu ambiente.
A quantidade de força necessária não depende apenas de forças físicas opostas dentro do próprio ambiente, como gravidade e fricção, mas também do próprio objeto.Por exemplo, se você tem dois objetos da mesma forma que estão se movendo no mesmo eixo, o objeto com a maior quantidade de massa requer mais força para alcançar a mesma aceleração linear.
As seguintes subseções usam montagens de diferentes formas e tamanhos para ensiná-lo a mover tanto um objeto inteiro quanto apenas uma parte do objeto a uma velocidade linear constante.Ao experimentar diferentes valores de propriedade, você aprenderá a estimar a quantidade máxima de força de que precisa para montagens em suas próprias experiências.
Use restrições de Velocidade Linear
LinearVelocity objetos são um tipo de restrição de mover que aplica força em toda uma montagem para manter uma velocidade linear constante.Ao não bloquear a posição da montagem em um eixo durante seu movimento, a montagem é livre para girar quando colide com outros objetos no espaço 3D.Esse tipo de movimento leva a cenários de jogo surpreendentes que são mais difíceis de prever para os jogadores.
Para começar a mover a montagem, a restrição LinearVelocity precisa saber:
- O ponto e a direção positiva ou negativa para aplicar uma força.
- A quantidade de metros que você quer que a montagem se mova por segundo.
- A quantidade máxima de força que o motor pode aplicar para a montagem atingir a velocidade linear constante.
Para demonstrar esse processo, você configurará um ponto de lírio com um anexo que uma restrição LinearVelocity referencia para mover o ponto de lírio 15 studs por segundo ao longo do eixo negativo X do mundo com uma velocidade linear constante.

Adicionar arquivo
Você pode especificar o ponto para aplicar força adicionando um objeto Attachment à montagem e configurando a posição do anexo no espaço 3D.A experiência de exemplo Movendo Objetos coloca um anexo no centro da almofada de lírio para que a restrição possa mover a malha a partir do anexo ao longo de um eixo específico.
Os anexos incluem auxílios visuais para ajudá-lo a visualizar seus eixos de movimento.A seta amarela denota o eixo principal da anexagem e a seta laranja denota o eixo secundário da anexagem.Embora nenhum eixo de movimento influencie o movimento da almofada de lírio nos passos desta técnica, é importante entender essas ajudas visuais para referência futura porque elas podem ajudá-lo a determinar o comportamento ideal para diferentes tipos de restrições, como o PrismaticConstraint na próxima técnica.

Para adicionar um anexo:
Na janela Explorer , expanda o diretório LinearVelocityExample , então expanda seu filho LilyPad_DIY modelo.
Insira um anexo na malha Pad .
- Passe o mouse sobre a malha e clique no botão ⊕. Um menu contextual é exibido.
- Do menu, insira um Anexo . O anexo é exibido no centro da peça.
- Renomeie o anexo para MoveAttachment .
Configurar restrição
Agora que sua malha tem um ponto fixo para mover a almofada de lírio, você pode configurar as propriedades de uma restrição LinearVelocity fixa para especificar a direção e a magnitude para a velocidade linear constante, a quantidade de studs que você quer que a malha mova por segundo e a quantidade máxima de força que o motor pode aplicar para a malha atingir uma velocidade linear constante.
A experiência de amostra Movendo Objetos aplica até 5000 Rowtons de força constante para mover o piso de lírio 15 metros por segundo ao longo do eixo negativo X do mundo com uma velocidade linear constante.Rowtons são as unidades físicas principais do Roblox para medir força.Para referenciar unidades físicas do Roblox e como elas se convertem em unidades métricas, veja Unidades do Roblox.
Para configurar uma restrição LinearVelocity de:
(Opcional) Faça com que a restrição seja visível no espaço 3D para que você possa referenciar sua direção linear.
- Navegue até a aba Modelo da barra de ferramentas, então para a seção Restrições .
- Se não estiver atualmente ativado, clique em Detalhes de restrição para exibir auxílios visuais de restrição.
Insira uma restrição LinearVelocity de inserção na malha Pad .
- Na janela Explorer , passe o mouse sobre a malha, então clique no ícone ⊕. Um menu contextual é exibido.
- Do menu contextual, insira Velocidade Linear .
Atribua a fixação do mesh à nova restrição.
- Na janela Explorer , selecione a restrição.
- Na janela Propriedades ,
- Defina Anexo0 para Mover Anexo .
- Defina MaxForce para 5000 aplicar até 5000 Rowtons de força constante para alcançar a velocidade linear de destino.
- Mantenha Relativo a para Mundo para mover o piso de lírio em relação à posição e orientação do mundo.
- Defina Restrição de Velocidade para Linha para restringir a força ao longo de uma linha a partir do anexo.
- Defina Direção da Linha para -1, 0, 0 para mover o piso de lírio ao longo do eixo negativo X do mundo.Observe que se você definir essa propriedade para 1, 0, 0 a almofada de lírio se moveria ao longo do eixo X positivo do mundo.
- Defina Velocidade da Linha para 15 para mover o piso de lírio 15 metros por segundo.
Verifique a quantidade de força que você define move o mesh 15 metros por segundo ao longo do eixo negativo X do mundo.
- Na barra de ferramentas, navegue até a aba Teste .
- Selecione Executar dos modos de teste de jogo. O Studio simula a experiência na posição da câmera atual sem o seu avatar no espaço 3D.
Use restrições de Confinamento Prismático
PrismaticConstraint objetos são um tipo de restrição mecânica que criam uma junta rígida entre dois anexos, permitindo que suas montagens pai se movam ao longo de um eixo em relação uns aos outros .Ao bloquear a posição de ambas as montagens para um único eixo, cada montagem só é capaz de girar se girarem juntas na mesma direção.
Esse tipo de movimento leva a cenários de jogo estáveis que são mais fáceis de prever para os jogadores.Por exemplo, a experiência de amostra Movendo Objetos usa objetos PrismaticConstraint para mover plataformas de log que os jogadores podem usar para cruzar com cuidado um rio gigante.
Quando você define PrismaticConstraint.ActuatorType para Motor , esta restrição aplica força nos dois anexos com o objetivo de os anexos alcançarem e manterem uma velocidade linear constante.Se você ancorar uma das montagens pai dos anexos, a força continua a mover a montagem não ancorada a uma velocidade linear constante enquanto a montagem ancorada permanece estática.
Para começar a mover a montagem, a restrição PrismaticConstraint precisa saber:
- O ponto e a direção positiva ou negativa para aplicar uma força.
- A quantidade de metros que você quer que os anexos se movam por segundo.
- A quantidade máxima de força que o motor pode aplicar aos anexos e suas montagens pai para alcançar uma velocidade linear constante.
Para demonstrar esse processo, você configurará uma montagem de registro com dois objetos que têm anexos filhos que referenciam um PrismaticConstraint 40 estacas por segundo ao longo do eixo negativo X do mundo com uma velocidade linear constante.

Configurar anexos
Você pode especificar a direção para mover um objeto específico dentro de uma montagem adicionando dois objetos Attachment à montagem e configurando seu alinhamento e orientação no espaço 3D.A experiência de amostra Movendo Objetos alinha dois anexos ao longo do eixo X do mundo perto da posição onde o registro não ancorado se sobrepõe à parte ancorada e orienta o eixo primário de cada anexo para enfrentar o eixo negativo do mundo.
Quando você configura a restrição de restrição Prismática na próxima seção, ela moverá o registro em relação para a parte de âncora.Em outras palavras, o registro se afastará da parte estática que não pode se mover porque está ancorada no espaço 3D.
Para configurar anexos para a restrição prismática:
Na janela Explorer , expanda o diretório PrismaticConstraintExample , então expanda o modelo filho Log_DIY .
Insira um anexo no Log mesh.
- Passe o mouse sobre a malha e clique no botão ⊕. Um menu contextual é exibido.
- Do menu, insira um Anexo . O anexo é exibido no centro da peça.
- Renomeie o anexo para LogAttachment .
Usando o mesmo processo, insira um anexo na parte ÂÂÂAncorar , então renomeie o anexo ÂÂÂAncorarAttachamento .
Usando a ferramenta Seletor de Visualização como referência para as coordenadas do mundo, gire LogAttachment e AncoragemAttach até que o eixo principal de cada anexo seja voltado para o eixo negativo X do mundo
Reposicione Ancoragem de Anexo para que ambos os anexos estejam alinhados no eixo X do mundo.
Configurar restrição
Agora que seus anexos estão alinhados no mesmo eixo e enfrentam a mesma direção que você quer que o log se mova, você pode configurar as propriedades de uma restrição PrismaticConstraint de âmbito para especificar se deve aplicar a velocidade linear constante do alvo na direção positiva ou negativa do eixo principal de cada anexo, a quantidade de metros que você quer que os anexos se movam por segundo e a quantidade máxima de força que o motor pode aplicar para o log alcançar uma velocidade linear constante.
Embora você possa escolher diferentes valores para seus próprios casos de uso, a experiência de amostra Movendo Objetos aplica até 50000 Rowtons de força constante para mover os anexos 40 radianos por segundo ao longo do eixo negativo X do mundo com uma velocidade linear constante.No entanto, porque a fixação de âncora está em um objeto ancorado, apenas a fixação do log pode se mover.
Para configurar uma restrição prismática:
Insira um objeto PrismaticConstraint em malha Log .
- Na janela Explorer , passe o mouse sobre a malha, então clique no ícone ⊕. Um menu contextual é exibido.
- Do menu contextual, insira um Construto Prismático .
Atribua os anexos do registro à nova restrição para que o registro se mova em relação ao bloco ancorado.
- Na janela Explorer , selecione a restrição.
- Na janela Propriedades ,
- Defina Anexo0 para AncorarAnexo .
- Defina Anexo1 para LogAttachment . A restrição é exibida na janela de visualização.
Na janela Explorer , selecione a restrição, então na janela Propriedades,
- Defina Tipo de Atuador para Motor . Novos campos de propriedade são exibidos.
- Defina MotorMaxForce para 50000 aplicar até 50000 Rowtons de força constante para alcançar a velocidade linear alvo.
- Defina Velocidade para 40 para mover o log 40 metros por segundo.
Verifique a quantidade de força que você define move o log 40 metros por segundo ao longo do eixo negativo X do mundo.
- Na barra de ferramentas, navegue até a aba Teste .
- Selecione Executar dos modos de teste de jogo. O Studio simula a experiência na posição da câmera atual sem o seu avatar no espaço 3D.
Aplique uma força linear inicial
Outra maneira de alterar a velocidade linear de um objeto é aplicando um impulso de força.Após o impulso de força, o objeto decelera até se tornar estático se houver uma força opositora, como atrito, ou permanece em movimento com velocidade linear constante se não houver nenhuma força opositora.
Essa técnica é útil para mover objetos após um evento de jogabilidade significativo, como uma explosão ou colisão impactante, porque fornece feedback instantâneo aos jogadores.Para demonstrar, a seguinte subseção ensina você a lançar o personagem de um jogador para cima em direção ao céu quando eles colidirem com um trampolim com um impulso inicial que você pode adaptar com novos valores para atender aos seus próprios requisitos de jogabilidade.
Use ApplyImpulse
O método ApplyImpulse aplica força em toda uma montagem para obter uma velocidade linear inicial antes de desacelerar para uma parada quando há forças opositoras.Para começar a mover a montagem, o método precisa saber:
- A montagem para se mover.
- O eixo para aplicar força para alcançar uma velocidade linear inicial.
- A quantidade de força a aplicar a cada eixo.
Você pode definir todos esses valores em um script.Por exemplo, o script de amostra define a montagem para se mover como o objeto do personagem do jogador Humanoid , então aplica um impulso de força que é 2500 segundos Rowton para lançar o jogador para cima no eixo positivo do mundo.Observe que os personagens dos jogadores têm diferentes quantidades de massa, então você pode precisar aumentar e equilibrar essa força para lançar todos os jogadores sem lançar personagens de jogadores com quantidades menores de massa muito altas.
Para mover uma montagem usando ApplyImpulse :
Na janela Explorer , expanda o diretório ApplyImpulseExample , então expanda seu filho JumpPad_DIY modelo.
Insira um script na parte JumpPad .
- Passe o mouse sobre a peça e clique no botão ⊕. Um menu contextual é exibido.
- Do menu, insira um Script . O anexo é exibido no centro da peça.
- Renomeie o script para JumpScript .
Substitua o código padrão pelo seguinte código:
local volume = script.Parentlocal function onTouched(other)local impulse = Vector3.new(0, 2500, 0)local character = other.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and other.Name == "LeftFoot" thenother:ApplyImpulse(impulse)endendvolume.Touched:Connect(onTouched)