BodyForce with max speed

hello everyone! i tried to make a helicopter but my problem…

the helicopter is too fast

I use a bodyforce
image

robloxapp-20210404-1019064.wmv (2.4 MB)

client script (local script):

--Localscript
local ContextActionService = game:GetService("ContextActionService")

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local plane = script.Obj.Value

local RunService = game:GetService("RunService")
local height = 0
local turn = 0
local moving = 0
local Tilt = 0


local MoveRightKeyDown = false
local MovetLeftKeyDown =false

local vel = plane.Main.BodyVelocity
local tru = plane.Main.BodyForce
local BodyGyro = plane.Main.BodyGyro

local speed = 20

function MoveUp(action_name, action_state)
	if action_state == Enum.UserInputState.Begin then
		height = 50
	end
	if action_state == Enum.UserInputState.End then
		height = 0
	end
end

function MoveDown(action_name, action_state)
	if action_state == Enum.UserInputState.Begin then
		height = -50
	end
	if action_state == Enum.UserInputState.End then
		height = 0
	end
end

function MoveLeft(action_name, action_state)
	MovetLeftKeyDown = false
	if action_state == Enum.UserInputState.Begin then
MovetLeftKeyDown = true
	while MovetLeftKeyDown do
		wait(0.1)
		turn = turn + 5
	end
	 elseif action_state == Enum.UserInputState.End then
      MovetLeftKeyDown = false
end

end



function MoveRight(action_name, action_state)
	MoveRightKeyDown = false
	if action_state == Enum.UserInputState.Begin then
MoveRightKeyDown = true
	while MoveRightKeyDown do
		wait(0.1)
		turn = turn - 5
end
	 elseif action_state == Enum.UserInputState.End then
      MoveRightKeyDown = false
end

end

function MoveForward(action_name, action_state)
	if action_state == Enum.UserInputState.Begin then
		moving = -5000
		 Tilt = -10
	end
	if action_state == Enum.UserInputState.End then
		moving = 0
		 Tilt = 0
	end
end

function MoveBackwards(action_name, action_state)
	if action_state == Enum.UserInputState.Begin then
		moving = 5000
		 Tilt = 10
	end
	if action_state == Enum.UserInputState.End then
		moving = 0
		Tilt = 0
	end
end



RunService:BindToRenderStep("Update", Enum.RenderPriority.Input.Value, function()
	
	BodyGyro.CFrame = CFrame.Angles(0, math.rad(turn), 0) * CFrame.Angles(math.rad(Tilt), 0, 0)
	tru.Force = plane.Main.CFrame.LookVector * (-moving * 2 )
	vel.Velocity = Vector3.new(0,height,0)
	
end)

script.ison.Changed:Connect(function()
	if script.ison.Value == false then
		ContextActionService:UnbindAction("Down", MoveDown, false, "q")
		ContextActionService:UnbindAction("Up", MoveUp, false, "e")
		ContextActionService:UnbindAction("Left", MoveLeft, false, "a")
		ContextActionService:UnbindAction("Right", MoveRight, false, "d")
		ContextActionService:UnbindAction("Forward", MoveForward, false, "w")
		ContextActionService:UnbindAction("Backwards", MoveBackwards, false, "s")
	else
		ContextActionService:BindAction("Down", MoveDown, false, "q")
		ContextActionService:BindAction("Up", MoveUp, false, "e")
		ContextActionService:BindAction("Left", MoveLeft, false, "a")
		ContextActionService:BindAction("Right", MoveRight, false, "d")
		ContextActionService:BindAction("Forward", MoveForward, false, "w")
		ContextActionService:BindAction("Backwards", MoveBackwards, false, "s")
	end
end)

thank you in advance :slight_smile:

1 Like

Is it the speed in the vehicle seat?

yes i use the vehicle seat.
but when i put the limit max speed:
6461
it does not work

Bonjour, le problème dans le script est le nombre’s utilisé pour le BodyForce dans le RenderStep.

Je suis désolé, j’etudie francais un peu dans mon l’ecole

Le nombre est trop gros, 5000!

et

Vous devriez changer le nombre pour “moving” dans le script para changer la vitesse.

English:

Change the amount of force being put within the variable “moving” which controls the helicopters move forward and backwards speed.