Works in Unreal Engine 5. Updated October 2026.
Quick answer: gameplay can’t touch a Control Rig directly, so pass the value through the Animation Blueprint:
- In the Control Rig, add a variable (for example a Vector TargetLocation) and make it public with its eye icon. Use it in Forwards Solve to place your control.
- In the Animation Blueprint, the Control Rig node now shows it as an input. Connect an Anim Blueprint variable to it (tick it under Input in the node’s Details if no pin appears).
- In Event Blueprint Update Animation, Try Get Pawn Owner, cast to your actor and copy the value into that variable.
Why it works this way
A Control Rig placed in an Animation Blueprint runs as part of animation, not as part of your actor. Your actor’s Blueprint has no handle to it, so values must travel: actor → Animation Blueprint → Control Rig node → rig variable.
Step 1: Use the variable inside the rig
- Open your Control Rig and add a variable in My Blueprint. Click its eye icon so it is public.
- In Forwards Solve, use it. For example, Set Transform – Control on your hand control with TargetLocation, before the IK node that reads that control.
- Compile.
Step 2: Feed it from the Animation Blueprint
- Open the Animation Blueprint for the mesh and select the Control Rig node in the AnimGraph.
- Find the variable under Input in the Details panel and expose it as a pin.
- Create a matching Anim Blueprint variable and connect it.
Step 3: Send the value from gameplay
In the Animation Blueprint’s Event Graph, on Event Blueprint Update Animation:
- Try Get Pawn Owner (for non-pawns use Get Owning Actor).
- Cast To your Blueprint class.
- Read the value from your actor and Set the Anim Blueprint variable.
Your actor now just updates its own variable, for example on Tick or when the player aims, and the rig follows every frame.
Controls are in rig space, not world space. If the hand flies off somewhere odd, convert your world location first: inverse-transform it by the skeletal mesh component’s world transform.
Common mistakes
| Problem | Fix |
|---|---|
| No pin on the Control Rig node | The rig variable isn’t public, or the rig isn’t compiled |
| Value changes but nothing moves | The control is set after the IK solve. Set it first |
| Works in the editor preview, not in game | The cast fails: check the Anim Blueprint’s owner class |
| Everything is offset | World location given where rig space is expected |
Other built-in option
The Control Rig Component runs a rig on a skeletal mesh straight from your actor, with Blueprint functions to set controls. It is handy for mechanical rigs, but it sits outside the Animation Blueprint, so mixing it with regular animation blending is harder.
FAQ
How many values can I pass this way?
As many as you like, but each new value means a rig variable, a pin and a line in the Event Graph.
Is it expensive?
No. Copying a few variables per frame is cheap. The rig’s own solve is the real cost.
Can I do this in C++?
Yes. Set the Anim Instance’s variables from your actor’s C++ the same way.
Related tutorials
Set controls straight from your actor. Game Thread Rigs finds the live Control Rig inside your Animation Blueprint, so your Actor Blueprint can call Set World Location, Set World Transform or Set Local Transform on any control or bone, without a variable per value. Add the GameThreadRigComponent, call Init Game Thread Rig Component with your skeletal mesh on BeginPlay, and you’re set. The rig still runs afterwards, so if its own graph sets the same control, the rig’s value wins.