I am currently attempting to make a car that when the .Steer values of a vehicle seat are 0,1, or -1, the wheels turn. However, the wheels are not turning, and I am not sure why.
Below are the two scripts I am using to one, generate the weld, and two, control them.
Weld:
local prev
local parts = script.Parent:GetChildren()
for i = 1,#parts do
if ((parts[i].className == "Part") or (parts[i].className == "Seat") or (parts[i].className == "WedgePart") or (parts[i].className == "Seat") or (parts[i].className == "TrussPart") or (parts[i].className == "VehicleSeat") or (parts[i].className == "SkateboardPlatform")) then
if (prev ~= nil) then
if (parts[i].Name == "FLWheel") or (parts[i].Name == "FRWheel") then
local weld = Instance.new("Weld")
weld.Part0 = script.Parent.Engine
weld.Part1 = parts[i]
weld.C0 = script.Parent.Engine.CFrame:inverse()
weld.C1 = parts[i].CFrame:inverse()
weld.Parent = parts[i]
parts[i].Anchored = false
weld.Name = "WheelWeld"
else
local weld = Instance.new("Weld")
weld.Part0 = prev
weld.Part1 = parts[i]
weld.C0 = prev.CFrame:inverse()
weld.C1 = parts[i].CFrame:inverse()
weld.Parent = prev
parts[i].Anchored = false
end
end
if (parts[i].Name == "FLWheel") or (parts[i].Name == "FRWheel") then
prev = prev
else
prev = parts[i]
end
end
end
wait(3)
Main Driving Script:
--Editting properties:
local TurnSpeed = nil
local MaximumSpeed = nil
local SetSpeed = nil
local Braking = nil
local Car = script.Parent.Parent
local Seat = script.Parent
local Driving = false
script.Parent.ChildAdded:connect(function(child)
if child.Name == "SeatWeld" and child:IsA("Weld") then
Driving = true
local character = child.Part1.Parent
local player = game.Players:GetPlayerFromCharacter(character)
Car.CarOwner.Value = player.Name
end
end)
script.Parent.ChildRemoved:connect(function(child)
if child.Name == "SeatWeld" then
Driving = false
end
end)
MainDrive = coroutine.create(function()
end)
local FRWeld = Car.FRWheel:WaitForChild("WheelWeld")
local FLWeld = Car.FLWheel:WaitForChild("WheelWeld")
local welds = {FLWeld.C1,FRWeld.C1}
LeftRightWheel = coroutine.create(function()
while wait() do
if Driving == true then
if Seat.Steer == -1 then
welds[1] = welds[1] * CFrame.Angles(0,90,0)
welds[2] = welds[2] * CFrame.Angles(0,-90,0)
elseif Seat.Steer == 1 then
welds[1] = welds[1] * CFrame.Angles(0,-90,0)
welds[2] = welds[2] * CFrame.Angles(0,90,0)
elseif Seat.Steer == 0 then
welds[1] = welds[1] * CFrame.Angles(0,0,0)
welds[2] = welds[2] * CFrame.Angles(0,0,0)
end
end
end
end)
coroutine.resume(LeftRightWheel)
All of the variables are correctly defined, and the instance "WheelWeld" has a part0 of the center part in the car, "Engine" and a Part1 of the wheel. The if statement for the main drive script is passing, I checked with "print()". I can't tell why it isn't turning....
Am I trying to rotate them incorrectly?
