Fall Guys-Like Fan Hovering Effect

  1. What do you want to achieve?

I am trying to re-create the fans you find in Fall guys, the player jumps above the fan, the player floats upwards to a certain spot, they jump off where the fan is, they return to normal, hopefully the video below helps explain.

  1. What is the issue?

I have no idea where to begin. I have looked at LinearVelocity and LinearForce but not sure whether they will be any help to me or if they are, how I could implement them to create this, I have looked at their documentation but I can’t seem to find whether they’d help in this situation. The animations aren’t important in this case, just looking for the basic functionality.

Additional Information

If anyone knows how I could achieve this or what I can try, please let me know.

Here is a video I found that showcases the fan I am trying to recreate, I am trying to start with a straight-upwards one, but the video should give you an idea.

Again, any help is appreciated :slight_smile:

Try adding vectorforce or reduce gravity

Not too sure how to implement it, I gave it a go here but nothing seemed to happen other than the force being changed as the script says, I probably did something wrong, could you give me a hand?

for _, fanParts in pairs(CS:GetTagged("FanPart")) do
	fanParts.Touched:Connect(function(touched)
		print(touched)
		RS.RE.VectorForce:FireServer(player)
	end)
end
player.CharacterAdded:Connect(function(char)
		local vectorForce = Instance.new("VectorForce")
		vectorForce.Parent = char.Head
		vectorForce.RelativeTo = "World"
		vectorForce.ApplyAtCenterOfMass = false
RE.VectorForce.OnServerEvent:Connect(function(player)
	player.Character.Head.VectorForce.Force = Vector3.new(0, 10, 0)
end)

when you add the vector force, you should add in in the

function and add it to the HumanoidRootPart

tried it with the HRP, still nothing and I need it to change at a certain point, not entire duration of the game, so I used a remote event.

ok well try what i said ???

no difference, does nothing still

show me your scripts real quick

The VectorForce is in the HumanoidRootPart when I check and so is the force

	player.CharacterAdded:Connect(function(char)
		local vectorForce = Instance.new("VectorForce")
		vectorForce.Parent = char.HumanoidRootPart
		vectorForce.RelativeTo = "World"
		vectorForce.ApplyAtCenterOfMass = true
		player.Character.HumanoidRootPart.VectorForce.Force = Vector3.new(0, 10, 0)

This is now the only script doing anything since the other one was the remote event and the second triggered the event

i literally said to add the vector force in the remote, on into the player. show me all 3 of the scripts you are using

RE.VectorForce.OnServerEvent:Connect(function(player)
	local vectorForce = Instance.new("VectorForce")
	vectorForce.Parent = player.Character.HumanoidRootPart
	vectorForce.RelativeTo = "World"
	vectorForce.ApplyAtCenterOfMass = true
	player.Character.HumanoidRootPart.VectorForce.Force = Vector3.new(0, 10, 0)
end)
for _, fanParts in pairs(CS:GetTagged("FanPart")) do
	local db = false
	fanParts.Touched:Connect(function(touched)
		if db == false then
			db = true
			print(touched)
			RS.RE.VectorForce:FireServer(player)
			task.wait(0.5)
			db = false
		end
	end)
end

is this what your asking or not, it still does nothing, there would now only be 2 scripts now?

RE.VectorForce.OnServerEvent:Connect(function(player)
print("working")
print(player)
	local vectorForce = Instance.new("VectorForce")
	v.RelativeTo = Enum.ActuatorRelativeTo.World
	vectorForce.ApplyAtCenterOfMass = true
	player.Character.HumanoidRootPart.VectorForce.Force = Vector3.new(math.huge,math.huge,math.huge)
	vectorForce.Parent = player.Character.HumanoidRootPart
end)

tell me if everything prints fine

yes everything printed - working and player name printed

heh im gona steal use your code1
You forgot to go against gravity, formula on the y axis: game.Workspace.Gravity * Part:GetMass() + ExtraForce

RE.VectorForce.OnServerEvent:Connect(function(player)
print("working")
print(player)
    local HumanoidRP = player.Character:FindFirstChild("HumanoidRootPart")
	local vectorForce = Instance.new("VectorForce")
	v.RelativeTo = Enum.ActuatorRelativeTo.World
	vectorForce.ApplyAtCenterOfMass = true
	player.Character.HumanoidRootPart.VectorForce.Force = Vector3.new(HumanoidRP.CFrame.LookVector.X,(game.Workspace.Gravity*HumanoidRP:GetMass())+10,HumanoidRP.CFrame.LoockVector.Z)
	vectorForce.Parent = player.Character.HumanoidRootPart
end)

tryt that?

still nothing happens when i tried that

WAIT I FORGOT SOMETHING, VECTORFORCES NeEd AtTaCtHcMeNtZ!
code:

RE.VectorForce.OnServerEvent:Connect(function(player)
print("working")
print(player)
local Debris = game:GetService("Debris")
    local HumanoidRP = player.Character:FindFirstChild("HumanoidRootPart")
	local vectorForce = Instance.new("VectorForce")
local Attachment = Instance.new("Attachment",HumanoidRP)
VectorForce.RelativeTo = "Attachment0"
VectorFroce.Attachment0 = Attachment
Debris:AddItem(Attachment,4)
	vectorForce.ApplyAtCenterOfMass = true
	player.Character.HumanoidRootPart.VectorForce.Force = Vector3.new(HumanoidRP.CFrame.LookVector.X,(game.Workspace.Gravity*HumanoidRP:GetMass())+10,HumanoidRP.CFrame.LoockVector.Z)
	vectorForce.Parent = player.Character.HumanoidRootPart
end)
1 Like

i think from testing it works when the player jumps, only problem now is that I need the player to hover when they start touching the part like in the video, do you have any ideas on that ?

figured it out

1 Like