How to make a Grab Move?

Hello, so recently, I’ve been wondering if how would I go on to make a grab move?

Basically, a grab move is a type of an ability/move where you can grab the opponent/victim’s character and perform some sort of beatdown or ability.

a link to an example of a grab move:

This is a pretty advanced one, I don’t think I’ll be able to make something like this, but I’m curious on what or how it can be done.

Now, I usually don’t make/create posts without researching about it, but honestly, I haven’t found that many tutorials or help on it.

The only post about it that gave me a decent understanding is this post:

In short, he uses a WeldConstraint between you and the victim and sets the victim’s .PlatformStand property to true. (As for all I know)

Now, I don’t really think this is the best way to do it, it feels a bit off,
but of course, I might be wrong. What my main concern is, how would I make the victim stick to a specific part/attachment? Like in the video above, when he headslams the victim, the head sticks with the player’s arm’s position, or more specifically, an attachment probably.

I don’t want anyone to script it for me, I just want how I can achieve it.

4 Likes

Personally I’d recommend weld, there are various methods to go on about this but I think weld would be better than bodymovers and such to stick. Anyways once welded and positioned you just play animation on both the humanoids. One being the attacker while the other being the reactor to the attacks. Thought make sure to disable AutoRotate to stop the attacker and ‘attacked’ to rotate or cause some weird outcomes. So yea that game design/mechanic usually takes almost no scripting and just pure animation.

2 Likes

How am I supposed to calculate both of the animations? Like how would I go on to sync both of them so that they are well-positioned?

You don’t. You just animate, AKA you will also animate their position. After that it’s as simple as :Play on both humanoids/animator. So the weld could just make them be clipping each other but that won’t show anyways since you’re playing a animation. The important part is that they’re at the correct relative position and not getting messed up hence using weld or maybe just anchor both the humanoid/character. As long as their body doesn’t get affected by any force then the animation will handle everything that’s why either use weld to make sure they’re always ‘sticked’ together or anchor.

Essentially its just like the M1 mechanic on games these days, when a player clicked mouse1 then you will play an animation of punching and then cast a hitbox, after the said hitbox scanned a enemy player you will then play a reaction animation on that enemy.

Anyways, animation isn’t just stationary it can ‘move’ too. Thought by ‘move’ while it looks like the character is getting moved, the rootpart (Usually humanoidrootpart) stay’s in 1 place, hence after the animation ends the character will snap back to the original position it was before the animation was played.

Here’s an Example of pure animation with 0 scripting, all made in moon animator.
https://youtu.be/XHgmKISZfSc

1 Like

I actually have thought of that, but the reason why I didn’t do this is because, imagine, you press a key to initiate the beatdown/ability, you would need to weld the victim (Also, would anchoring be a viable option?). Imagine, if the victim were to hit almost the edge of the hitbox, now, if we were to not position them accordingly, this would cause both of the humanoids to be out of sync.

Of course, this can be solved by simply by positioning the victim.

my idea is that, if I were to position it by:

local localplayer = game.Players.LocalPlayer
local character = localplayer.Character or localplayer.CharacterAdded:Wait()
local hrp = character:WaitForChild("HumanoidRootPart")

game.UserInputService:Connect(function(input, gpe)
if gpe then return end
     if input.KeyCode == Enum.KeyCode.G then
     -- fire an event to the server
     -- the server would position it by doing something like this:
     victimhrp.CFrame = hrp.CFrame.LookVector*5
     end
end)

The following code was doing in studio to quickly give an example, so there may be mistakes.

Now, although this can be done, my question is, how would I animation both of them like the video you sent? How am I supposed to know in which keyframe/second their head or their body part would be moving? (I don’t have Moon Animator unfortunately)

With moon animator you can simply animate both at the same time, but you can also just animate each humanoid using roblox default animation creator and you can simply sync the keyframes using the timestamp on the animator albeit more time consuming and harder, after creating the animation you simply just play the animation at the same time on both the humanoid. Anchoring could work if you position them else the animation won’t really be out of sync just that you’d be hitting from miles away if somehow the enemy was far.

And if you ever noticed when grab move is used its either your character that will snap into position or the enemy.

I haven’t used Moon Animator much but, As for all I know, if I were to animate both at the same time, how would I apply both the animations to specifically to the victim and the character?

Also, do you know any other plugins/resources that I could use to animate both at the same time?