Objetos em movimento são objetos que se movem em um ou mais eixos dentro do espaço 3D. Usando o poder incorporado 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 imita o comportamento físico real que é familiar e intuitivo para os jogadores, como a gravidade, a aerodinâmica e a fricção.
Usando o arquivo Movendo Objetos.rbxl como referência, este tutorial explica como forças físicas afetam movimentos lineares no Studio e mostra várias técnicas de mover objetos de ponto A para ponto B em suas experiências com diferentes comportamentos de movimento, incluindo técnicas de guia:
- Usando um LinearVelocity mover restrição para mover uma montagem inteira em uma velocidade constante.
- Usando um PrismaticConstraint para restringir uma montagem em um único eixo e movê-la em uma velocidade 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 decelere lentamente ao longo do tempo.
Movimento Linear e Forças Físicas
O Roblox Studio é um motor de simulação de mundo real que emula o comportamento físico em tempo real, então para prever como os objetos se movem linharesmente, é importante ter uma compreensão de alto nível de como os objetos se movem na vida real com movimento linear. Movimento linear é movimento ao longo de um eixo. Por exemplo, quando um bloco tem movimento linear, ele se move ao longo de um eixo específico.
O movimento linear não pode existir sem forças físicas externas empurrando ou puxando objetos para se mover. De acordo com a primeira lei do movimento de Newton, objetos estacionários permanecem estacionários e objetos em movimento permanecem em movimento com uma velocidade constante a menos que sejam ativados 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 mova para mover.
Força é a medida da direção e magnitude de um empurrão ou puxo físico que causa os objetos a alterar sua velocidade linear ao longo de um eixo. Um cambalhota na velocidade é conhecido como aceleração . Este conceito é particularmente importante para os objetos para se mover no Studio; quanto mais você aplica aos objetos, mais rápido eles aceleram.
Isso ocorre porque a força precisa ser maior que qualquer força física empurrando de volta contra o Objeto, como a gravidade ou 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 fricção 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 l
Velocidade linear é a medida de um Objeto's movimento, ou quão rápido o objeto muda sua posição ao longo de um eixo ao longo de um período de tempo. O Studio mede velocidade linear de acordo com o número de studs que um objeto move por segundo. Studs são unidades físicas principais do Roblox para medir comprimento, e cada stud equivale a cerca de 28cm no mundo real.
Entender velocidade linear é importante para projetar gameplay em suas experiências, pois ajuda a determinar quanta força você precisa para alcançar uma velocidade específica para seus objetos em movimento. Por instância, quando você quiser propelir 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 ajudam a entender melhor esses conceitos à medida que você aprende a mover objetos em uma velocidade linéar constante ou inicial com a força necessária para superar quaisquer forças físicas opostas dentro do ambiente. À medida que você revisa esses conceitos de física com as técnicas futuras, você pode prever mais precisamente como ajustar os valores de propriedade para alcançar qualquer comportamento de movimento ideal no Studio.
Mantenha uma velocidade constante
Para que um objeto alcance e mantenha uma velocidade linear constante, ele precisa de uma força para superar quaisquer forças físicas opostas que decelerem a velocidade linear do Objetoou causem o objeto a permanecer estacionário. Por exemplo, se você quiser que um objeto tenha uma velocidade linear de [0, 12, 0] no Studio, você precisa de uma força suficiente para que o objeto alc
A quantidade de força necessária não só depende de forças físicas opostas dentro do próprio ambiente, como a gravidade e fricção, mas também do próprio objeto. Por exemplo, se você tiver dois objetos do mesmo formato que estão se movendo na mesma eixe, 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 ensinar você como mover um objeto inteiro ou apenas uma parte do objeto em uma velocidade linear constante. À medida que você experimenta com diferentes valores de propriedade, você aprenderá a estimar a quantidade máxima de força que você precisa para montagens em suas próprias experiências.
Usando Constraints de Velocidade Linha
LinearVelocity objetos são um tipo de restrição de mover que aplica força em uma montagem inteira para manter uma velocidade linear constante. Ao não bloquear a posição da montagem para um eixo durante seu movimento, a montagem é livre para girar como colide com outros objetos no espaço 3D. Este tipo de movimento leva a cenários de jogo surpreendentes que são mais difíceis de prever.
Para começar a mover a montagem, o LinearVelocity limite precisa saber:
- O ponto e direção positiva ou negativa para aplicar uma força.
- A quantidade de studs que você quer que a montagem mova por segundo.
- A quantidade máxima de força que o motor pode aplicar para a montagem atingir a velocidade constante linear.
Para demonstrar esse processo, você configurará uma almofada de lírio com um acessório que uma restrição <a href="/reference/engine/datasheet/">Class.LinearVelocity</a> referência para mover a almofada de lírio <a href="/reference/engine/datasheet/">15</a> studs por segundo ao longo do eixo negativo do mundo em uma velocidade constante.
Adicionar Acessório
Você pode especificar o ponto a ser aplicado ao adicionar um objeto Attachment ao montagem, então configurar a posição do anexono espaço 3D. A experiência de exemplo Mover Objetos coloca um acessório no centro da almofada de lírio para que o limite possa mover o malha a partir do acessório ao longo de um eixo particular.
Acessórios incluem auxílios visuais para ajudá-lo a visualizar seus eixos de movimento. A seta amarela denota o eixo principal do anexo, e a seta laranja denota o eixo secundário do anexo. Embora nenhum eixo de movimento afete o movimento do lótus na etapa desta técnica, é importante entender esses auxílios visuais para futuras refer
Para adicionar um anexo:
Na janela Explorer , expanda o LinearVelocityExample pasta, então expanda seu filho LilyPad_DIY modelo.
Insira um acessório na malha Pad .
- Passe o mouse sobre a malha e clique no botão ⊕. Um menu contextual será exibido.
- Do menu, insira um Ataque . O acessório será exibido no centro da peça.
- Renomeie o acessório para Mover o Acessório .
Configurar Con限
Agora que seu malha tem um ponto fixo para mover o lótus espaçamento/acolchoamento, você pode configurar as propriedades de um LinearVelocity limite para especificar a direção e a magnitude para a velocidade constante, a quantidade de studs que você quer que o malha se mova por segundo e a quantidade máxima de força que o motor pode aplicar para o malha atingir uma velocidade constante.
A experiência de Mover Objetos aplica-se até 5000 Robtons de força constante para mover a almofada de lírio 15 studs por segundo ao longo do eixo negativo do mundo em uma velocidade de movimento constante. Robtons são unidades físicas principais do Roblox para medir a força. Para referenciar unidades físicas do Roblox e como elas são convertidas para unidades métricas, see Unidades do Roblox</
Para configurar um LinearVelocity restrição:
(Opcional) Faça a restrição visível no espaço 3D para que você possa referenciar sua direção linear.
- Na barra de menu, navegue até a aba Modelo e depois na seção Construtores.
- Se não estiver ativado, clique em Detalhes de Conjunto para exibir ajudas visuais de conjunto.
Insira um LinearVelocity limite no Pad malha.
- Na janela Explorer , passe o mouse sobre a malha, então clique no ícone ⊕. Um menu contextual será exibido.
- Do menu contextual, insira Velocidade Linial .
Atribua o acessório da malha à nova restrição.
- Na janela Explorer , selecione a restrição.
- Na janela Propriedades ,
- Definir Ataque0 para MoverAtaque .
- Definir MaxForce para 5000 para aplicar até 5000 Rowtons de força constante para alcançar a velocidade linear do alvo.
- Mantenha RelativeTo para World para mover o lótus pad relativo à posição e orientação do mundo.
- Definir VelocityConstraint para Linha para limitar a força ao longo de uma linha a partir do anexo.
- Definir LinhaDireção para -1, 0, 0 para mover o pad de lótus ao longo do eixo negativo do mundo. Observe que se você definir esta propriedade para 1, 0, 0, o pad de lótus se moverá ao longo do eixo positivo do mundo.
- Definir Velocidade da Linha para 15 para mover o pad de lótus 15 studs por segundo.
Verifique a quantidade de força que você definiu move o malha 15 studs por segundo ao longo do eixo negativo do mundo.
Na barra de menu, navegue até a aba Teste .
Na seção Simulação, clique no Seletor de Modo. Um menu suspenso será exibido.
Selecione Correr . O Studio simula a experiência na posição de câmera atual sem o seu avatar no espaço 3D.
Usando Con約束 Prismático
Objetos Class.PrismaticConstraint são um tipo de restrição mecânica que cria uma articulação rígida entre dois acessórios, permitindo que suas montagens de pais se movam ao longo de um eixo relativo . Ao bloquear a posição de ambas as montagens para um eixo, cada montagem só pode girar se elas girarem juntas na mesma direção.
Este tipo de movimento leva a cenários de jogo estáveis que são mais fáceis para os jogadores preverem. Por exemplo, a experiência de Mover Objetos usa PrismaticConstraint objetos para mover plataformas de log que os jogadores podem usar para atravessar cuidadosamente um rio gigante.
Quando você configura PrismaticConstraint.ActuatorType para Motor , esta restrição aplica força nos dois acessórios com a finalidade dos acessórios alcançarem e manterem uma velocidade constante. Se você ancorar uma das assembléias de pais de um acessório, a força continuará a mover a assembléia não ancorada em uma velocidade constante enquanto a assembléia ancorada permanece estática.
Para começar a mover a montagem, o PrismaticConstraint limite precisa saber:
- O ponto e direção positiva ou negativa para aplicar uma força.
- A quantidade de studs que você quer que os anexos se movam por segundo.
- A quantidade máxima de força que o motor pode aplicar para os acessórios e suas montagens parentes para alcançar uma velocidade linear constante.
Para demonstrar esse processo, você configurará uma montagem de log com dois objetos que têm anexos de filho que um PrismaticConstraint referências para mover o log 40 studs por segundo ao longo do eixo negativo X no mundo em uma velocidade constante.
Configurar Acessórios
Você pode especificar a direção para mover um determinado objeto dentro de uma montagem adicionando dois objetos Attachment à montagem, então configurando sua alinhação e orientação no espaço 3D. A experiência de Mover Objetos mostra duas montagens ao longo do eixo X do mundo perto da posição de onde o log não ancorado sobra com a parte an
Quando você configura sua restrição prismática na próxima seção, ele moverá o log em relação para a peça de ancoragem. Em outras palavras, o log irá se mover para fora da peça estacionária que não pode se mover porque está ancorada no espaço 3D.
Para configurar acessórios para a restrição prismática:
Na janela Explorer , expanda o pasta PrismaticConstraintExample , e então expanda seu filho Log_DIY .
Insira um acessório na malha de log .
- Passe o mouse sobre a malha e clique no botão ⊕. Um menu contextual será exibido.
- Do menu, insira um Ataque . O acessório será exibido no centro da peça.
- Renomeie o acessório para Ataque de Logs .
Usando o mesmo processo, insira um anexo na peça Ancorar , então renomeie o anexo AnchorAppearance .
Usando a ferramenta Selecionar Visualizador como referência para os coordenados mundiais, girar LogAppearance e AnchorAppearance até que cada anexotenha uma face primária de acesso ao eixo negativo do mundo
Reposicionar AnchorAttachment para que ambos os anexos estejam alinhados no eixo X do mundo.
Configurar Con限
Agora que seus anexos estão alinhados no mesmo eixo e rosto na mesma direção que você quer que o log se movimento, você pode configurar as propriedades de um limite de PrismaticConstraint para especificar se aplicar a velocidade constante de direção na direção positiva ou negativa de cada anexe's' principal eixo, a quantidade de studs que você quer que os anexos se movam por
Enquanto você pode escolher diferentes valores para seus próprios casos de uso, a experiência de Mover Objetos é aplicável até 50000 Rowtons de força constante para mover os acessórios 40 radianos por segundo ao longo do eixo negativo do mundo em uma velocidade logarítmica constante. No entanto, porque o anexo de ancor é em um objeto ancorado, apenas o anexo do log pode ser movimento.
Para configurar uma restrição prismática:
Insira um objeto PrismaticConstraint no malha Log.
- Na janela Explorer , passe o mouse sobre a malha, então clique no ícone ⊕. Um menu contextual será exibido.
- Do menu contextual, insira um PrismaticConstraint .
Atribua os acessórios do log ao novo limite para que o log se mova em relacionamento com a parte ancorada do bloco.
- Na janela Explorer , selecione a restrição.
- Na janela Propriedades ,
- Definir Ataque0 para Ataque de Ancoragem .
- Definir Ataque1 para LogAmount . O limite é exibido na janela de visualização.
Na janela Explorer , selecione a restrição, então na janela Propriedades,
- Definir ActuatorType para Motor . Novos campos de propriedade são exibidos.
- Definir MotorMaxForce para 50000 para aplicar até 50000 Rowtons de força constante para alcançar a velocidade linear do alvo.
- Definir Velocidade para 40 para mover o log por segundo.
Verifique a quantidade de força que você definiu move o log 40 studs por segundo ao longo do eixo negativo do mundo.
Na barra de menu, navegue até a aba Teste .
Na seção Simulação, clique no Seletor de Modo. Um menu suspenso será exibido.
Selecione Correr . O Studio simula a experiência na posição de câmera atual sem o seu avatar no espaço 3D.
Aplicando uma Força Linear Inicial
Outra maneira de alterar a velocidade linear de um Objetoé aplicando um impulso de força. Depois do impulso de força, o objeto decela até se tornar estacionário se houver uma força oposta, como fricção, ou permanecer em movimento com velocidade linear constante se não houver forças opostas.
Essa técnica é útil para mover objetos depois de um evento de jogabilidade significativo, como uma explosão ou colisão impactante, porque ela fornece comentário/retornoinstantâneo aos jogadores. Para demonstrar, a subseção a seguir ensina você como lançar um personagem de um jogador para cima quando eles colidem com um pulo pad com um impulso inicial que você pode adaptar com novos valores para atender aos seus próprios requisitos de jogabilidade.
Usando ApplyImpulse
O método ApplyImpulse aplica força em uma montagem inteira para obter uma velocidade inicial linear antes de desacelerar para um stop quando há forças opostas. Para começar a mover a montagem, o método precisa saber:
- A montagem para se movimento.
- O eixo para aplicar força para alcançar uma velocidade inicial linear.
- A quantidade de força a ser aplicada a cada eixo.
Você pode definir todos esses valores em um script. Por exemplo, o script de exemplo define a montagem para se mover como o ObjetoHumanoid do personagem do jogador, então aplica um impulso de força que é 2500 Rowton-segundos para lançar o jogador para cima no eixo positivo do mundo. Nota que os personagens do jogador têm diferentes quantidades
Para mover uma montagem usando ApplyImpulse :
- Na janela Explorer , expanda o ApplyImpulseExample pasta, 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 será exibido.
- Do menu, insira um Script . O anexo será exibido no centro da peça.
- Renomeie o script para JumpScript .
- Substitua o código padrão com o seguinte 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)