Objetos giratórios são objetos que giram em um ou mais eixos dentro do espaço 3D. Usando o poder embutido do motor de simulação do Roblox, você pode fazer objetos girarem e interagirem com seu ambiente de uma maneira que emula o comportamento físico do mundo real que é familiar e intuitivo para os jogadores, como gravidade, aerodinâmica e atrito.
Usando o arquivo Objetos Giratórios .rbxl como referência, este tutorial explica como as forças físicas impactam o movimento angular no Studio e mostra várias técnicas para girar objetos em seus jogos com diferentes comportamentos de giro, incluindo orientações sobre:
- Usar uma restrição AngularVelocity para girar um conjunto inteiro a uma velocidade angular constante.
- Usar uma restrição mecânica HingeConstraint para girar uma parte dentro de um conjunto a uma velocidade angular constante enquanto o restante do conjunto permanece estacionário.
- Usar o método ApplyAngularImpulse para girar um conjunto com um impulso inicial de força angular, de modo que o conjunto desacelere lentamente ao longo do tempo.
Movimento angular 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, portanto, para prever o comportamento de objetos giratórios em jogos, é importante ter uma compreensão de alto nível de como os objetos giram na vida real com movimento angular.
Movimento angular, ou movimento rotacional, é o movimento em torno de um ponto ou eixo fixo. Por exemplo, quando uma hélice tem movimento angular, ela gira em torno de seu eixo rotacional no meio da hélice.

O movimento angular não pode existir sem forças físicas externas empurrando ou puxando objetos para girar. 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 afetados por uma força externa. Por exemplo, uma hélice estacionária permanece estacionária, a menos que uma força física como o vento a empurre para girar.
Torque é a medida da força física que faz os objetos girarem, e é responsável por objetos obterem aceleração angular. Este conceito é particularmente importante para objetos girarem no Studio; quanto mais torque você aplicar aos objetos, mais rapidamente eles podem acelerar.
Isso ocorre porque o torque precisa ser maior do que quaisquer forças físicas direcionais que empurrem contra o objeto, como gravidade ou atrito. Por exemplo, se você colocasse a hélice na terra, a força física do vento precisaria superar a quantidade de atrito da terra para continuar acelerando a hélice giratória. Se a força do vento não for muito maior do que o atrito da terra, a hélice acelera, mas mais lentamente do que no exemplo anterior.

Velocidade angular é a medida da taxa de rotação de um objeto, ou quão rápido o objeto gira em torno de um ponto ou eixo fixo ao longo do tempo. O Studio mede a velocidade angular de acordo com quantos radianos um objeto gira por segundo. Existem 2π radianos (6.283) em uma rotação, então, para que um objeto faça uma rotação completa por segundo, ele deve ter torque suficiente para girar cerca de 6 radianos. Compreender a velocidade angular é importante para projetar a jogabilidade em seus jogos, pois ajuda você a determinar quanto torque você precisa para alcançar uma aceleração particular para seus objetos giratórios.
As seções a seguir mergulham mais fundo nesses conceitos enquanto você aprende a girar objetos a uma velocidade angular constante ou inicial com o torque necessário para superar quaisquer forças físicas opostas dentro do ambiente. À medida que você revisa esses conceitos de física com as técnicas que virão, poderá prever com mais precisão como ajustar os valores das propriedades para alcançar qualquer comportamento de giro ideal no Studio.
Manter uma força angular constante
Para que um objeto alcance e mantenha uma velocidade angular constante, ele precisa de uma força angular para superar quaisquer forças físicas opostas que desacelerem a velocidade angular do objeto ou façam o objeto permanecer estacionário. Por exemplo, se você quiser que um objeto tenha uma velocidade angular de [0, 12, 0] no Studio, você precisa de torque suficiente para que o objeto alcance e mantenha 12 radianos por segundo ao longo do eixo Y em seu ambiente, ou cerca de duas rotações completas por segundo.
A quantidade de torque que você aplica aos seus objetos não depende apenas das forças físicas opostas dentro do próprio ambiente, como gravidade e atrito, mas também do próprio objeto. Por exemplo, se você tiver dois objetos da mesma forma que estão girando no mesmo eixo, o objeto maior com o maior momento de inércia requer mais torque para alcançar a mesma aceleração angular.
As subseções a seguir usam conjuntos de diferentes formas e tamanhos para ensinar como girar um objeto inteiro ou apenas uma parte do objeto. À medida que você experimenta diferentes valores de propriedades, aprenderá a estimar a quantidade máxima de torque que você precisa para conjuntos em seus próprios jogos.
Usar restrições AngularVelocity
Objetos AngularVelocity são um tipo de restrição de mover que aplicam torque em um conjunto inteiro para manter uma velocidade angular constante. Para começar a girar o conjunto, a restrição AngularVelocity precisa saber:
- O ponto e a direção positiva ou negativa para aplicar uma força angular.
- A quantidade de radianos que você deseja que o conjunto gire por segundo.
- A quantidade máxima de torque que o motor pode aplicar para que o conjunto alcance uma velocidade angular constante.
Para demonstrar esse processo, você adicionará um bloco ao seu espaço de trabalho com um anexo que uma restrição AngularVelocity referencia para girar o bloco 6 radianos por segundo ao longo do eixo Y do mundo a uma velocidade angular constante, ou cerca de uma rotação completa.

Adicionar anexo
Você pode especificar o ponto fixo para girar um conjunto adicionando um objeto Attachment ao conjunto e, em seguida, configurando a posição do anexo no espaço 3D. O jogo de exemplo Objetos Giratórios coloca um anexo no centro de uma parte de bloco para que a restrição possa girar a parte no sentido anti-horário em torno do centro dela.
Os anexos incluem ajudas visuais para ajudá-lo a visualizar seus eixos de rotação. A seta amarela denota o eixo primário do anexo, e a seta laranja denota o eixo secundário do anexo. Embora nenhum dos eixos de rotação influencie a rotação do bloco nos passos desta técnica, é importante entender essas ajudas visuais para referência futura, pois elas podem ajudá-lo a determinar o comportamento ideal para diferentes tipos de restrições, como a HingeConstraint na próxima técnica.

Para adicionar um anexo:
Na janela Explorer, insira uma parte bloco no Workspace.

Insira um anexo na nova parte.
- Na janela Explorer, passe o mouse sobre a parte e clique no botão ⊕. Um menu contextual é exibido.
- No menu, insira um Attachment. O anexo é exibido no centro da parte.
- Renomeie o anexo para SpinAttachment.

Configurar restrição
Agora que seu bloco tem um ponto fixo para girar, você pode configurar as propriedades de uma restrição AngularVelocity para especificar a direção rotacional, o eixo ou eixos para aplicar uma velocidade angular constante alvo, a quantidade de radianos que você deseja que o bloco gire por segundo e a quantidade máxima de torque que o motor pode aplicar para que o bloco alcance uma velocidade angular constante.
O jogo de exemplo Objetos Giratórios aplica até 1000 Rowton-studs de força angular constante para girar o bloco 6 radianos por segundo ao longo do eixo Y do mundo a uma velocidade angular constante. Rowton-studs são as unidades físicas primárias do Roblox para medir torque. Para referência sobre as unidades físicas do Roblox e como elas se convertem em unidades métricas, consulte Unidades do Roblox.
Para configurar uma restrição AngularVelocity:
Para tornar a restrição visível na visualização para que você possa referenciar sua direção rotacional, ative Mostrar Detalhes da Restrição no menu Visualizar do Studio.
Insira uma restrição AngularVelocity na parte.
- Na janela Explorer, passe o mouse sobre a parte e clique no ícone ⊕. Um menu contextual é exibido.
- No menu contextual, insira AngularVelocity. A ajuda visual da restrição é exibida no meio da parte.
Atribua o anexo da parte à nova restrição.
- Na janela Explorer, selecione a restrição.
- Na janela Propriedades,
- Defina Attachment0 como SpinAttachment.
- Defina AngularVelocity como 0, 6, 0 para girar a parte 6 radianos por segundo ao longo do eixo Y. Observe que se você definir essa propriedade como 0, -6, 0, o bloco giraria no sentido horário.
- Defina MaxTorque como 1000 para aplicar até 1000 Rowton-studs de força angular constante por segundo para alcançar a velocidade angular alvo.
- Mantenha RelativeTo como World para girar o bloco em relação à posição e orientação do mundo.

Verifique se a quantidade de torque que você definiu faz o bloco girar 6 radianos por segundo ao longo do eixo Y do mundo.
Selecione o modo de simulação Executar no menu suspenso da mezzanine e clique no botão Reproduzir para começar. O Studio simula o jogo na posição atual da câmera sem seu avatar no espaço 3D.

Você pode precisar ajustar seu torque dependendo da escala do seu bloco e de quaisquer forças físicas opostas em seu ambiente. Por exemplo, as propriedades da restrição AngularVelocity no jogo de exemplo funcionam para uma parte de bloco com um tamanho padrão de 4, 1, 2 em uma plataforma plana com um material plástico, e um ambiente com a gravidade padrão clássica.
No entanto, se seu bloco for de um tamanho maior e estiver em um terreno de grama, você precisará aumentar a propriedade AngularVelocity.MaxTorque porque a força angular precisa superar tanto a massa do bloco quanto o atrito do ambiente. Por exemplo, a parte do bloco grande que é quatro vezes o tamanho da parte do exemplo precisa de pelo menos 300000 Rowton-studs de força angular constante para alcançar a velocidade angular definida!
Usar restrições HingeConstraint
Objetos HingeConstraint são um tipo de restrição mecânica que permite que dois anexos girem em torno de um eixo, restringindo os anexos à mesma posição e seus eixos primários na mesma direção. Quando você define HingeConstraint.ActuatorType como Motor, essa restrição aplica torque nos dois anexos com o objetivo de que os anexos alcancem e mantenham uma velocidade angular constante.
Além disso, quando você coloca anexos em um conjunto com dois objetos, os objetos se bloqueiam e tentam girar juntos de acordo com o eixo primário fixo do anexo. Se você ancorar um desses objetos, a força angular continua a girar o outro objeto a uma velocidade angular constante enquanto o restante do conjunto permanece estacionário.
Por exemplo, para começar a girar um objeto específico dentro de um conjunto, a restrição HingeConstraint precisa saber:
- A posição onde você deseja que os anexos se sobreponham.
- O ponto e a direção positiva ou negativa para aplicar uma força angular.
- A quantidade de radianos que você deseja que o anexo gire por segundo.
- A quantidade máxima de torque que o motor pode aplicar para que o anexo alcance uma velocidade angular constante.
Para demonstrar esse processo, você adicionará um conjunto de hélice com dois objetos ao seu espaço de trabalho com anexos em ambos os objetos que uma restrição HingeConstraint referencia para girar a hélice 3 radianos por segundo (cerca de meia rotação completa por segundo) ao longo do eixo Y a uma velocidade angular constante enquanto a base da hélice permanece estacionária.

Obter ativo da hélice
A Loja do Criador é uma aba da Caixa de Ferramentas que você pode usar para encontrar todos os ativos feitos pelo Roblox e pela comunidade Roblox para uso em seus projetos, incluindo modelos, imagens, malhas, áudios, plugins, vídeos e ativos de fonte. Você pode usar a Loja do Criador para adicionar um ativo individual ou uma biblioteca de ativos diretamente em um jogo aberto.
Este tutorial faz referência a um modelo de hélice que você pode usar enquanto replica cada passo da técnica HingeConstraint de girar objetos. Para obter este ativo de hélice do seu inventário para o seu jogo:
Adicione a hélice ao seu inventário.
- Navegue até a página de detalhes do ativo na Loja do Criador.
- No canto superior direito, clique no botão Obter Modelo. O ativo da hélice agora está no seu inventário, e você pode reutilizá-lo em qualquer projeto na plataforma.
No Studio, navegue até a aba Início e clique no botão Caixa de Ferramentas. A janela Caixa de Ferramentas se abre.

Na janela Caixa de Ferramentas, clique na aba Inventário. A classificação Meus Modelos é exibida.

Clique no bloco Hélice. O modelo é exibido na sua visualização.

Configurar anexos
Você pode especificar tanto a posição onde deseja que os anexos se sobreponham quanto a direção do movimento rotacional para girar um objeto específico dentro de um conjunto adicionando dois objetos Attachment ao conjunto e, em seguida, configurando seu alinhamento e orientação no espaço 3D.
O jogo de exemplo Objetos Giratórios alinha dois anexos perto da posição onde a hélice não ancorada se sobrepõe à base ancorada e orienta seu eixo primário de rotação para cima, de modo que girem no sentido anti-horário. O anexo da base não pode girar neste exemplo porque a base está ancorada.
Para configurar anexos para a restrição de dobradiça:
Insira um objeto Attachment em Cabeça e Base.
- Na janela Explorer, passe o mouse sobre Cabeça e clique no botão ⊕. Um menu contextual é exibido.
- No menu, insira um Attachment.
- Repita esse processo para Base.
- Renomeie ambos os anexos para HeadAttachment e BaseAttachment, respectivamente.

Gire HeadAttachment e BaseAttachment para que o eixo primário de cada anexo aponte para cima no eixo Y. Isso diz ao Studio para girar os anexos no sentido anti-horário.

Mova BaseAttachment para o topo de Base e HeadAttachment para a borda inferior de Hélice. Isso diz ao Studio onde conectar a dobradiça em si e sobrepor ambos os anexos em tempo de execução.

Configurar restrição
Agora que seus anexos têm posição para se sobrepor e uma direção de movimento rotacional, você pode configurar as propriedades de uma restrição HingeConstraint para especificar a quantidade de radianos que você deseja que o anexo gire por segundo e a quantidade máxima de torque que o motor pode aplicar para que o anexo alcance uma velocidade angular constante.
Semelhante à técnica anterior, o jogo de exemplo Objetos Giratórios aplica até 1000 Rowton-studs de força angular constante para girar o anexo 3 radianos por segundo ao longo do eixo Y a uma velocidade angular constante. No entanto, como o anexo da base está em um objeto ancorado, apenas o anexo da hélice pode girar.
Para configurar uma restrição de dobradiça:
Insira um objeto HingeConstraint em Cabeça.
- Na janela Explorer, passe o mouse sobre Cabeça e clique no ícone ⊕. Um menu contextual é exibido.
- No menu contextual, insira uma HingeConstraint.
Atribua os anexos da hélice à nova restrição para que a hélice gire em relação a base ancorada.
- Na janela Explorer, selecione a restrição.
- Na janela Propriedades,
- Defina Attachment0 como BaseAttachment.
- Defina Attachment1 como HeadAttachment. A dobradiça é exibida na visualização.

Na janela Explorer, selecione a restrição e, em seguida, na janela Propriedades,
- Defina ActuatorType como Motor. Novos campos de propriedade são exibidos.
- Defina MotorMaxTorque como 1000 para aplicar até 1000 Rowton-studs de força angular constante para alcançar a velocidade angular alvo.
- Defina AngularVelocity como 3 para girar a cabeça da hélice 3 radianos por segundo.

Verifique se a quantidade de torque que você definiu faz a hélice girar 3 radianos por segundo ao longo do eixo Y.
Selecione o modo de simulação Executar no menu suspenso da mezzanine e clique no botão Reproduzir para começar. O Studio simula o jogo na posição atual da câmera sem seu avatar no espaço 3D.

Aplicar uma força angular inicial
Outra maneira de mudar a velocidade angular de um objeto é aplicando um impulso de força angular. Após o impulso de força angular, o objeto desacelera até se tornar estacionário se houver uma força oposta, como atrito, ou permanece em movimento com velocidade constante se não houver forças opostas.
Essa técnica é útil para girar objetos após um evento significativo de jogabilidade ou clima, como uma forte rajada de vento, porque fornece feedback instantâneo aos jogadores. Para demonstrar, a subseção a seguir ensina como girar um conjunto com uma força angular inicial aleatória que você pode adaptar com novos valores para atender aos seus próprios requisitos de jogabilidade.
Usar ApplyAngularImpulse
O método ApplyAngularImpulse aplica torque em um conjunto inteiro para obter uma velocidade angular inicial antes de desacelerar até parar. Para começar a girar o conjunto, o método precisa saber:
- O conjunto a ser girado.
- O eixo para aplicar torque para alcançar uma velocidade angular inicial.
- A quantidade de torque a ser aplicada em cada eixo.
Você pode definir todos esses valores em um script. Por exemplo, o script de exemplo define o conjunto a ser girado como o pai do script e, em seguida, aplica um impulso aleatório de força angular entre 0 e 100 Rowton-studs no eixo Y.
Para girar um conjunto usando ApplyAngularImpulse:
Insira uma parte esfera no Workspace. O exemplo usa uma esfera com um MaterialVariant para que você possa visualizar claramente o movimento da esfera.

Insira um script na nova parte.
- Na janela Explorer, passe o mouse sobre a parte e clique no botão ⊕. Um menu contextual é exibido.
- No menu, insira um Script.
Substitua o código padrão pelo seguinte código:
local part = script.Parent
local impulse = Vector3.new(0, math.random(0, 100), 0)
part:ApplyAngularImpulse(impulse)