I am trying to make a basic airplane that uses the player's mouse to steer the vehicle. I've tried for hours but I can't find any solution...
I have only figured out how to move one part using my mouse, I can't get the plane models' children (every part of the plane) to move according to its speed and the mouse position, please help.
Here is my code:
local seat = script.Parent
local front_speed = 1
local up_speed = 0
local max_height = 100
local throttle = 0
local throttleMax = 100
local throttleDown = false
local throttleUp = false
local UserInputService = game:GetService("UserInputService")
while task.wait() do
local TweenService = game:GetService("TweenService")
script.AngularVelocity.AngularVelocity = Vector3.new(0, -1 * seat.Steer, 0)
print(workspace.Plane2.mainbase.VehicleSeat.Position.Y) -- equal to (20^2 / 2*10) = 400/20 = 20 studs
if seat.Throttle == 1 then
throttleUp = true
d = 1
repeat
d = d + 1
script.LinearVelocity.VectorVelocity = Vector3.new(0, up_speed, -front_speed)
front_speed = front_speed * 1.05
wait(0.1)
if front_speed >= 100 then
up_speed = 5
end
if front_speed < 100 then
up_speed = 0
end
if front_speed > 500 then
script.LinearVelocity.VectorVelocity = Vector3.new(0, up_speed, -500)
end
print(d)
until d == 100 or seat.Throttle == 0 or seat.Throttle == -1 or front_speed == 500
script.LinearVelocity.VectorVelocity = Vector3.new(0, up_speed, -front_speed)
--[[d = 1
repeat
d = d + 1
for _, v in pairs(script.Parent.Parent.Parent:GetChildren()) do
v.Orientation = Vector3.new(0,0,d)
end
wait(0.1)
until d == 20
]]
end
if seat.Throttle == -1 then
repeat
d = d - 1
script.LinearVelocity.VectorVelocity = Vector3.new(0, -up_speed, -front_speed)
front_speed = front_speed * 0.95
wait(0.1)
if front_speed > 100 and up_speed > 1 then
up_speed = -5
end
if front_speed == 0 then
d = 0
end
print(d)
until d == 100 or seat.Throttle == 0 or seat.Throttle == -1 or front_speed == 500
script.LinearVelocity.VectorVelocity = Vector3.new(0, -up_speed, -front_speed)
end
if seat.Throttle == 0 then
script.LinearVelocity.VectorVelocity = Vector3.new(0, 0, -front_speed)
end
if seat.Throttle ~= 1 and seat.Throttle ~= 0 and math.round(seat.Position.Y - seat.Size.Y / 2) < -80 then
c = 1
repeat
script.LinearVelocity.VectorVelocity = Vector3.new(0, 0, -front_speed - 1)
front_speed = front_speed - 1
c = c + 1
wait(0.2)
if seat.Throttle == 1 then
script.LinearVelocity.VectorVelocity = Vector3.new(0, up_speed, -front_speed)
break
end
until c == 100
end
if seat.Position.Y + seat.Size.Y / 2 > max_height then
script.LinearVelocity.VectorVelocity = Vector3.new(0, -up_speed, -front_speed)
end
if seat.Occupant == nil then
script.LinearVelocity.VectorVelocity = Vector3.new(0, 0, 0)
end
end
mouse.Move:connect(function()
script.Parent.Parent.Parent:GetChildren().Position = mouse.Hit.p
end)
