Como criar um carro em movimento realista no Roblox Studio: passo a passo
Como criar um carro em movimento realista no Roblox Studio
Para criar um carro dirigível no Roblox Studio, construa um chassi, conecte cada roda com HingeConstraints corretamente alinhadas , use um VehicleSeat para entrada do jogador e deixe um script no servidor transformar essa entrada em torque e direção das rodas. Essa configuração permite que você tenha rodas giratórias, direção nas rodas dianteiras e colisões físicas sem depender do VehicleSeat para controlar os motores das dobradiças automaticamente.
As imagens abaixo são guias no estilo Studio para posicionamento de objetos, não capturas de tela exatas do editor atual. Siga os nomes, configurações e código nas instruções. Esta construção para iniciantes é de tração traseira com chassi rígido; não inclui suspensão nem diferencial.
O que você precisa antes de construir
Roblox Studio e um projeto Baseplate em branco.
Conhecimento básico dos painéis Explorer e Properties.
Oito etapas de construção simples. Mantenha o carro virado para o eixo Z negativo (a direção para frente no Roblox) para que o sinal de direção no script corresponda.
A ideia central é importante: uma HingeConstraint une dois Attachments em um ponto e eixo compartilhados. Uma dobradiça motorizada controla a velocidade angular; uma dobradiça servo-controlada controla um ângulo. A documentação do VehicleSeat do Roblox também explica que seu mecanismo de movimento integrado detecta apenas motores conectados diretamente ao assento ou por meio de conexões rígidas. Como as rodas ficam além das dobradiças, o script do controlador lê as entradas do assento e atualiza as dobradiças automaticamente.
Passo 1: Crie o chassi e o modelo do carro.
No Workspace, crie um Modelo chamado Car. Adicione uma Peça chamada Chassise defina seu Tamanho para aproximadamente (6, 1, 10). Posicione-a um pouco acima da Placa Base, centralizada aproximadamente em (0, 2.3, 0). Defina a Parte Primária do modelo como Chassi. A escala exata pode variar; as dimensões aqui são proporções iniciais, não limites do motor.
Um chassi retangular baixo fornece uma estrutura rígida única para as restrições das rodas e os painéis da carroceria.
Passo 2: Adicione a carroceria e as quatro rodas.
Adicione peças simples para o capô, a cabine e a carroceria traseira. Posicione-as acima do chassi e conecte cada peça decorativa ao chassi com uma restrição de solda . Defina as peças decorativas como `true` CanCollide = falsee, se forem apenas visuais, defina-as como Massless = true`false`. Mantenha o chassi como a principal estrutura de colisão.
Crie quatro peças cilíndricas denominadas WheelFL, WheelFR, WheelRL, e WheelRR. Gire cada cilindro de lado para que seu eixo fique na horizontal. Posicione os centros das rodas nos seguintes deslocamentos em relação ao centro do chassi:
Roda
Deslocamento do Chassi
Posição
WheelFL
Frente esquerda
(-3,5, -1, -3,2)
WheelFR
Frente direita
(3,5, -1, -3,2)
WheelRL
Traseira esquerda
(-3,5, -1, 3,2)
RodaRR
Traseiro direito
(3.5, -1, 3.2)
Para rodas com 2,6 furos de fixação, esses deslocamentos posicionam a parte inferior do pneu próxima à placa de base quando o centro do chassi estiver próximo de Y = 2,3. Ajuste as rodas CanCollidepara que fiquem alinhadas. Não solde as rodas ao chassi; elas precisam girar em suas dobradiças.
Os painéis da carroceria são fixados rigidamente à estrutura, enquanto as quatro rodas permanecem como peças móveis separadas.
Etapa 3: Posicione os suportes das rodas e os cubos de direção.
Adicione um ponto de fixação Attachmentno centro de cada roda e nomeie-o como AxleAttachment. Adicione conexões de eixo correspondentes ao chassi nos centros das rodas. As duas conexões de qualquer dobradiça de roda devem ocupar a mesma posição no mapa e suas setas amarelas de eixo devem apontar na mesma direção. Para as juntas das rodas, alinhe esse eixo horizontalmente ao longo do carro.
Para as rodas dianteiras, adicione pequenas peças de cubo nomeadas HubFLe HubFRespaçadas no mesmo centro das rodas dianteiras. Defina-as como transparentes, não colidíveis e sem massa. Cada cubo precisa de duas conexões: uma conexão de pivô de direção alinhada verticalmente e uma conexão de eixo alinhada lateralmente. Use a visualização de restrições do Studio para confirmar os eixos antes dos testes; uma dobradiça torcida ou desalinhada travará ou oscilará.
Alinhe os eixos de fixação antes de adicionar as restrições; o eixo da roda atravessa o carro.
Passo 4: Motorize as rodas traseiras
Adicione dois HingeConstraintobjetos ao modelo do carro: MotorRLe MotorRR. Para cada um, conecte o eixo do chassi correspondente à roda traseira AxleAttachment. Defina ActuatorTypecomo Motore inicie com MotorMaxTorque = 8000e MotorMaxAcceleration = 60. O controlador definirá AngularVelocityenquanto o jogador dirige.
Esses valores de torque são pontos de partida para o ajuste deste pequeno protótipo. Se os pneus girarem em falso sem que o carro se mova, verifique se o chassi está solto, se as rodas traseiras tocam o chão e se ambas as dobradiças estão alinhadas. Não adicione uma restrição de solda (WeldConstraint) sobre uma dobradiça do motor.
A roda permanece livre para girar porque sua conexão com a estrutura é uma dobradiça, e não uma solda.
Etapa 5: Adicione direção dianteira e rodas de giro livre.
Para cada lado frontal, conecte o chassi ao seu cubo com uma direção HingeConstraintchamada SteerFLou SteerFR. Defina-a ActuatorTypepara Servo, habilite os limites e defina os ângulos inferior e superior para cerca de -25 e 25 graus. Defina ServoMaxTorquepara um valor inicial próximo de 8000.
Em seguida, adicione uma segunda dobradiça de cada cubo à sua roda dianteira, nomeada como SpinFLe SpinFR. Defina ActuatorTypecomo None, para que as rodas dianteiras possam girar livremente enquanto as rodas traseiras empurram o carro. Para as dobradiças de direção, ambos os eixos de pivô devem apontar verticalmente. O script usa um sinal negativo para a direção à direita porque o modelo está voltado para -Z; se os pivôs das suas rodas girarem para o lado errado, inverta esse sinal.
O cubo gira para a esquerda e para a direita, enquanto uma dobradiça separada permite que a roda gire.
Passo 6: Instale o assento veicular e desprenda-o do carro.
Insira um assento VehicleSeatno modelo do carro e posicione-o acima do chassi, onde o motorista deve se sentar. Conecte-o rigidamente ao chassi com um conector WeldConstraint. O assento fornece os comandos de aceleração e direção do jogador; o script personalizado abaixo passa esses valores para os motores e servos das dobradiças.
Ao organizar as peças, mantenha-as ancoradas se isso facilitar o posicionamento. Antes de executar o carro, defina Anchored = falseo Chassi, o assento, as partes da carroceria, os cubos e as rodas. Certifique-se de que todas as partes móveis e restrições estejam vinculadas ao modelo do Carro. Use VehicleSeato nome exato do assento.
Posicione o assento sobre o chassi e, em seguida, solde-o à estrutura antes de testar o jogo.
Passo 7: Adicione o controlador de carro do lado do servidor
Insira um objeto regular Scriptno modelo do carro, nomeie-o CarControllere cole este código. Ele lê ThrottleFloatos SteerFloatdados do banco, controla as duas dobradiças do motor traseiro e ajusta a direção dos servos dianteiros. Mantenha este script como um script de servidor, não como um script local, para que a lógica do veículo não seja executada apenas no cliente do motorista.
local RunService = game:GetService("RunService")
local car = script.Parent
local seat = car:WaitForChild("VehicleSeat")
local driveMotors = {
car:WaitForChild("MotorRL"),
car:WaitForChild("MotorRR"),
}
local steeringServos = {
car:WaitForChild("SteerFL"),
car:WaitForChild("SteerFR"),
}
local MAX_WHEEL_ANGULAR_SPEED = 28 -- radians per second
local MAX_STEERING_ANGLE = 25 -- degrees
RunService.Heartbeat:Connect(function()
local occupied = seat.Occupant ~= nil
local throttle = occupied and seat.ThrottleFloat or 0
local steer = occupied and seat.SteerFloat or 0
for _, hinge in ipairs(driveMotors) do
hinge.AngularVelocity = throttle * MAX_WHEEL_ANGULAR_SPEED
end
for _, hinge in ipairs(steeringServos) do
-- The car faces -Z; reverse this sign if your axes turn the other way.
hinge.TargetAngle = -steer * MAX_STEERING_ANGLE
end
end)
Certifique-se de que os nomes das quatro dobradiças no Explorer correspondam exatamente aos nomes no script. As dobradiças do motor devem ser definidas como "Motor" e as dobradiças da direção como "Servo" nas Propriedades. Para garantir a responsividade em partidas multiplayer, o Roblox atribui a propriedade da rede de física automaticamente por padrão. Você pode atribuir a propriedade ao piloto de um conjunto de veículos, se necessário, mas a física controlada pelo cliente pode ser manipulada; valide qualquer movimento do veículo que afete os resultados ou recompensas da competição.
Use o bloco de código acima como fonte de referência; esta visualização em estilo de editor serve apenas como guia de posicionamento.
Etapa 8: Teste, ajuste e finalize.
Inicie um teste de jogo, sente-se no banco e use os controles de movimento normais. No computador, a entrada padrão do veículo geralmente é W/S para frente e para trás e A/D para direção, dependendo das configurações de controle da sua experiência. Observe a rotação das rodas, a direção, as curvas e as colisões em uma grande área plana de teste. Altere uma configuração por vez:
O carro se move para trás: inverta o sinal da velocidade angular do motor traseiro ou inverta os dois eixos de fixação do eixo traseiro simultaneamente.
A direção está invertida: remova o sinal de menos anterior steerno script.
As rodas giram, mas a carroceria permanece imóvel: verifique se o chassi não está ancorado, se as dobradiças traseiras estão alinhadas com as peças corretas e se os pneus tocam o chão.
O carro treme ou capota: abaixe a carroceria, reduza o torque ou o ângulo de direção e faça com que os painéis decorativos não sejam colisíveis, para que não se prendam no chassi.
A parte dianteira não esterça: verifique se cada articulação do servo está usando o ponto de articulação vertical do cubo, e não o ponto de articulação do eixo da roda.
Depois que o veículo base estiver funcionando, adicione peças para faróis e lanternas traseiras, um objeto de som para o loop do motor ou um emissor de partículas para o escapamento. Uma verdadeira melhoria na suspensão requer molas ou restrições de suspensão e mais ajustes; este carro inicial do Roblox Studio se concentra em um chassi estável, rodas giratórias e direção responsiva.
Um teste de funcionamento verifica se o veículo se move para a frente, vira e mantém os pneus na estrada.
Por que essa configuração funciona
A antiga abordagem de soldar cada roda ao chassi impede a rotação da roda, e um assento de veículo (VehicleSeat) sozinho não garante o controle de rodas articuladas. Este projeto separa as funções: as restrições de solda (WeldConstraints) mantêm a carroceria e o assento rigidamente no lugar, as restrições de articulação (HingeConstraints) fornecem rotação e direção, e um script de servidor mapeia a entrada do jogador para esses atuadores. Comece com a geometria e as configurações aqui e, em seguida, ajuste o torque do motor e o ângulo de direção para corresponder à massa e à escala do seu carro.