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

How to make knockback script? BodyVelocity not working well

Hello everyone! I've been working on a fighting game for some time, similar to Super Smash Bros.. If you've played the game, you would know that players are knocked back when hit, following a parabolic trajectory. How can I make the player follow a parabola? I've used CFrame but it's too choppy, and I've tried BodyVelocity and it's pretty slow (the player gains velocity exponentially instead of max upon impact). Any help would be appreciated. Thank you!

1 answer

✓ Accepted answer

I would still recommend BodyVelocity. I made a Telekinesis Script for someone a couple days ago and I used Body Velocity.

Here would be an example of the Telekinesis Script but instead of Telekinesis.. We're knocking the targeted player backwards 10-20 studs in the direction of the Original Player's HumanoidRootPart Front Face.

-- Local Script: Child of StarterGui, Parent of RemotEvent, Ancestor of Script

local plr = game.Players.LocalPlayer
repeat wait() until plr.Character and plr.Character.HumanoidRootPart
local char = plr.Character
local hpart = char.HumanoidRootPart
local mouse = plr:GetMouse()
mouse.TargetFilter = char
local remoteEvent = script.RemoteEvent

mouse.Button1Down:Connect(function()
	if mouse.Target then
		if mouse.Target.Parent:IsA("Model") then
			if mouse.Target.Parent:FindFirstChild("Humanoid") then
				local target = mouse.Target.Parent.HumanoidRootPart
				remoteEvent:FireServer(hpart.CFrame.LookVector,target)
			end
		end
	end
end)
-- Server Script: Child of RemoteEvent, Descendant of Local Script

local remoteEvent = script.Parent

remoteEvent.OnServerEvent:Connect(function(plr,direction,target)
	local bodyV = Instance.new("BodyVelocity")
	bodyV.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
	bodyV.Parent = target
	bodyV.Velocity = direction*150
	wait(0.1)
	bodyV.Velocity = Vector3.new(0,0,0)
	wait()
	bodyV:Destroy()
end)

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