Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Hovering Part at Height with BodyThrust?

Asked by
l0cky2013 135
7 years ago

Hi all, I am trying to compose a function that keeps a part suspended at a constant height from a hit position, using bodythrusts. The below is what I have thus far, but I know that my logic behind applying the force is incorrect, as it thrusts up past the given height, and falls down. I would appreciate if anyone can at least help me solve this dilemma. Thanks!

local thrust = {}

local RunService = game:GetService("RunService")

local function getmass(part)
    return part:GetMass()*workspace.Gravity
end


function thrust:hover(thruster, height, a)
    local mass = getmass(thruster)
    local force = mass * a
    local obj = thruster:FindFirstChild("thrust") --//BodyThrust
    RunService.RenderStepped:connect(function()
        local r = Ray.new(thruster.Position, thruster.CFrame.upVector * -30)
        local ignore = {thruster}
        local part, pos, face = workspace:FindPartOnRayWithIgnoreList(r, ignore, false, true)
        local distance =(thruster.Position - pos).magnitude
        obj.Force = Vector3.new(0, (height/distance)*force, 0)
    end)
end



return thrust

Script calling hover:

require(game.ReplicatedStorage.ModuleScript):hover(script.Parent, 3, 2)

Answer this question