How can I put velocity on a Humanoid?

I’m trying to create a mock explosion. The explosion is meant to deal spherical knockback, pushing players and parts away similar to the actual Explosion object. I’ve done this using the Velocity property of BaseParts, like so:
Torso.Velocity = Torso.Position - Torso.Position
This works fine for regular, unanchored parts. However, the humanoid seems to be effected by Velocity very little. How can I put velocity onto the character? Should I use something other than Velocity, like a BodyMover? I know it’s possible to do somehow, as regular explosion objects can.

4 Likes

BodyVelocity you probably want to check that I don’t know if it can help but it might

You probably want to use a body mover or else it would simply be recoding already coded things.

1 Like

Using Humanoid:ChangeState, you can also change the state of the humanoid so that it is treated more like a physical object, like switching to Enum.HumanoidStateType.Physics (which you will have to turn off with the same method) or Enum.HumanoidStateType.PlatformStanding.

1 Like

Try with .lookvector, its very useful

I’d suggest using RunService.Heartbeat:Wait() before applying velocity as this will keep physics consistent. You also actually need to apply velocity this way twice for Humanoids (especially player controlled ones) I believe:

for i=1, 2 do
	RunService.Heartbeat:Wait()
	rootPart.Velocity = targetVelocity
end

I’m not sure why this is the case but Heartbeat is required to sync up with physics.
Also instead of using Torso, use Character.PrimaryPart or Character:WaitForChild("HumanoidRootPart"). This is the root part and is also the part which controls humanoid physics.

19 Likes