How to turn this long jump form a steep spike to a curve

I want to turn the jump from doing this


to this (this is the exact jump mine is based on)

this is my script

game.Players.LocalPlayer.Character:WaitForChild("Humanoid").StateChanged:Connect(function(old, state) -- run function
	if state == Enum.HumanoidStateType.Jumping and htime == 1 then
		coroutine.resume(coroutine.create(function()
			jumpanim:Play()
			local bv = Instance.new("BodyVelocity")
			bv.P = 10000000
			bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
			bv.Parent = game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart")
			local multi = 1
			repeat
				bv.Velocity = (game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart").CFrame.LookVector + Vector3.new(0,1,0)) * multi
				multi += 5
				task.wait(0.001)
			until multi >= 120
			
			repeat
				bv.Velocity = (game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart").CFrame.LookVector - Vector3.new(0,0.1 * multi/20,0)) * multi
				multi -= 1
				task.wait(0.01)
			until game.Players.LocalPlayer.Character:WaitForChild("Humanoid"):GetState() == Enum.HumanoidStateType.Landed or  game.Players.LocalPlayer.Character:WaitForChild("Humanoid"):GetState() == Enum.HumanoidStateType.Running or multi == 0
			bv:Destroy()
		end))
	end
end)

i just want to turn it from a spike to a curve

(sry for my bad code, never done something like this before)

1 Like

Use béizer curves

alr i will see how this goes and post back

im going to be honest i have literally no clue how those work, especially in 3d so i just did this

game.Players.LocalPlayer.Character:WaitForChild("Humanoid").StateChanged:Connect(function(old, state) -- run function
	if state == Enum.HumanoidStateType.Jumping and htime == 1 then
		coroutine.resume(coroutine.create(function()
			
			jumpanim:Play()
			local bv = Instance.new("BodyVelocity")
			bv.P = 10000000
			bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
			bv.Parent = game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart")
			bv.Velocity = (game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart").CFrame.LookVector * 100) + Vector3.new(0,60,0)
			
			
			task.wait(0.001)
			bv:Destroy()
		end))
	end
end)

this launches me the perfect amount, and gives the exact curve shape i wanted

edit jan 17 2023:
um, dont do that i would say. makes it feel reaaal stiff
probably use AssemblyLinearVelocity instead, since its just the same thing but better (in this case)
or actually use curves if you can figure them out

1 Like

hii, you probably already solved this but if not then you can try using RotVelocity to not only a curve shape trail, but for the prayer to rotate as well

something like this;

hrp.RotVelocity = hrp.CFrame:vectorToWorldSpace(Vector3.new(-math.rad(25), 0, 0));

Isn’t that just a worse version of AssemblyLinearVelocity? Also the Humanoid’s natural rotation would have to be disabled since it prevents forward/back rotations.

it is somehow buggy, but it kind of works

AssemblyLinearVelocity needs the part to be anchored tho, but either way bezier curves are kinda better

just a suggestion ! sryy

what… no it doesnt? if the part is anchored the velocity wont apply at all.

You should use Tween service to change velocity.