Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Can't create car movement?

So I was trying to make a car movement script for all devices and this happened: when the player moved left/right while moving forward/backwards it stopped the car completely, the reason why was because the script did not know whether i was moving forwards/backwards or right/left because the direction was in the middle of both of them, now i want to get the horizontal and vertical movement (in numbers). Here's the failed script:

while true do
	wait()
	if script.Parent.Occupant then
		local camera = game.Workspace.CurrentCamera
local humanoid = script.Parent.Occupant -- fill this in with your valid humanoid

if (humanoid.MoveDirection:Dot(script.Parent.CFrame.LookVector) > 0.75) then
	-- we're going right
	print("movefor")
	script.Parent.Velocity = script.Parent.Velocity + script.Parent.CFrame.LookVector * 5
	elseif (humanoid.MoveDirection:Dot(script.Parent.CFrame.LookVector) < -0.75) then
	-- we're going right
	print("movebac")
	script.Parent.Velocity = script.Parent.Velocity + script.Parent.CFrame.LookVector * -5
end
if (humanoid.MoveDirection:Dot(script.Parent.CFrame.RightVector) > 0.75) then
	-- we're going right
	print("turningright")
	script.Parent.Velocity = Vector3.new(0,0,0)
	if script.Parent.RotVelocity ~= script.Parent.CFrame.UpVector * -10 then
	script.Parent.RotVelocity = script.Parent.CFrame.UpVector * -10
	end
	script.Parent.Velocity = script.Parent.Velocity + script.Parent.CFrame.LookVector * 5

elseif (humanoid.MoveDirection:Dot(script.Parent.CFrame.RightVector) < -0.75) then
	-- we're going left
	print("turningleft")
	script.Parent.Velocity = Vector3.new(0,0,0)
	if script.Parent.RotVelocity ~= script.Parent.CFrame.UpVector * 10 then
	script.Parent.RotVelocity = script.Parent.CFrame.UpVector * 10
	end
	script.Parent.Velocity = script.Parent.Velocity + script.Parent.CFrame.LookVector * 5
		else
		script.Parent.RotVelocity = Vector3.new(0,0,0)
end
		script.Parent:SetNetworkOwner(game.Players:GetPlayerFromCharacter(script.Parent.Occupant))
	end
end

1 answer

while true do
	wait()
	if script.Parent.Occupant then
		local camera = game.Workspace.CurrentCamera
local humanoid = script.Parent.Occupant -- fill this in with your valid humanoid

script.Parent.Velocity = script.Parent.Velocity + script.Parent.CFrame.LookVector * 5 * humanoid.MoveDirection:Dot(script.Parent.CFrame.LookVector)

	script.Parent.RotVelocity = script.Parent.CFrame.UpVector * -5 * humanoid.MoveDirection:Dot(script.Parent.CFrame.RightVector)
		script.Parent:SetNetworkOwner(game.Players:GetPlayerFromCharacter(script.Parent.Occupant))
	end
end

This discussion is preserved as it was. New answers, comments, and votes are closed.