How do I attach the player to an AI Raven during a grab/carry attack without dragging or physics glitches?

Hi everyone,

I’m relatively new to Unreal Engine Blueprints, and I’m currently developing a multiplayer battle royale game called Marked.

The basic concept is that instead of relying only on something like a traditional shrinking zone, players can become Marked. When that happens, a giant, indestructible Raven hunts the Marked player. The Raven is meant to have several different possible attacks and behaviors so it feels unpredictable, including swooping at the player, landing near them, attacking them directly, and grabbing them with its talons and carrying them away.

The grab/carry attack is the part I’m currently having trouble with.

What I’m trying to make happen is:

  • The Raven swoops toward the Marked player.

  • When it reaches the player, the player is grabbed and attached around the Raven’s feet/talons.

  • The Raven continues flying while carrying the player.

  • The player should move completely with the Raven while being carried.

  • The player should not fall because of gravity, drag along the ground, or accidentally control/move the Raven.

  • Later, I want the Raven to either drop the player or finish the attack.

The Raven’s swoop itself is already working. It can fly toward the player and reach them. The problem starts when I try to attach the player to the Raven.

During testing, I’ve had several different problems:

  • The player gets dragged behind the Raven instead of actually being carried.

  • At one point, moving the player caused the Raven to move with the player, almost like the attachment relationship was backwards.

  • The player can still be affected by gravity while attached.

  • Disabling or overriding gravity helped with the falling, but caused other glitches.

  • I’ve tried Attach Actor to Actor and Attach Actor to Component.

  • I’ve experimented with attachment rules such as Keep World and Snap to Target.

  • I’ve also tried creating attachment points/sockets around the Raven’s feet so the player can be positioned where the talons are.

Because this is a multiplayer battle royale, this needs to happen dynamically during normal gameplay rather than as a scripted cutscene. Eventually, the Raven will choose between different attacks, so the grab/carry behavior needs to be something the AI can activate, perform, and then exit cleanly.

I’ve attached a screenshot of the relevant Blueprint.

What would be the recommended Blueprint setup for temporarily grabbing and attaching a Character to an AI-controlled flying actor?

Would I need to do something along the lines of:

  1. Disable or change Character Movement when the grab happens.

  2. Disable gravity/collision in some way.

  3. Attach the Character to a socket/component on the Raven.

  4. Let the Raven control all movement while carrying the player.

  5. Detach the Character and restore movement, gravity, and collision afterward.

Also, since this will eventually be multiplayer, is there anything I should be doing differently now so the grab/carry system will work correctly with replication later?

I’m still learning Blueprints, so if possible, a node-by-node explanation or an example of how the attachment sequence should be structured would be extremely helpful.

Thanks!

Can’t really read your graph since the pic is so small, but you probably just need to Set Movement mode to none on char movement component when you attach. For example, in my game, entering a car calls this function:

For me, the move mode is kind of redundant, since the player controller has possessed the car pawn by the time this block of nodes fires, but is still good for backup if the pawn was moving when player hits interact key (offscreen to left, I already told controller to possess car). May want to set ignoremoveinput on player controller too when grab starts (and re-enable when released).

For the attach logic there, that GetSeatMarker node is an interface message to target car which returns an invisible arrow component in car bp which I attach driver to. If you want to attach to a claw socket on birb, get its skelemesh (either via cast or an interface) and put the socket name in the attach bode. Should be using snap to target for at least rotation and location rule. Teh bool at the end is mostly just used by anim bp to transition to driving pose in anim graph.

Only other suggestion I can think of right now is to split up that cluster of wires into distinct StartRavenGrab and EndRavenGrab events or something so it’s easier to debug/change later.

Yeah, sorry about that. I didn’t realize I zoomed out too far. This is what the setup looks like.

There’s way too much going on in tick event there even if they are gated by branches and a do once. Should def move the animation and attach stuff to another event, and probably call that with an on begin overlap. Add another collision sphere to bird with a radius to match the grab distance, scroll to bottom of details panel for the sphere and click the button to add an on begin overlap event for it. On the new event, dragg off the other actor pin and see if it’s the player thry’re chasing., branch, and from true, call the grab event.

Moving the bird in tick might be fine, but it would be better handling that with ab AI controller. Either way vinterping it in a straight line towards player will cause it to hit walls.

Also, get player 0 won’t really work in multiplayer. It works when you’re testing alone in editor, but online, every player will have a different number. Probably going to need a variable for a specific player, and have a game mode blueprint assign it when a player joins.