Transition from a walking blendspace to a crouching blendspace using a bool?

should have noticed that earlier. yes the way you wire “isCrouching?” is wrong.(probably wanted you to discover that from stock character)
Basically your animation graph shouldn’t have anything that’s replicated(or rep notify).
you should have a mirrored bool in your pawn, and your animation bp’s event graph should get it from pawn owner and set local variable for other graph(like blend space, anim graph, state change rule graph).

I think this is probably the most annoying part, but once you understand that you can have 2 characters but one animation blueprint, then it will make sense.
one character could still be walking, but another will be crouch idle, when your isCrouching? local var is replicated from a specific pawn, you’d have one animation bp for each character isn’t it?
Animation bp is like a function call, you pass in variables, and they return vertices position for your skeleton mesh. they do have their local states that was hidden from view, like which frame played for each character.(maybe hidden in skeleton mesh, who knows)
pretty much all your animation bp’s graph should wired in a way that you only assume who ever use it, have the required variable for it to query, what ever event you want to pass over, the pawn owner will understand what to do.

check this 2 screenshot from ASP_Character, first from pawn blueprint, take note of var naming on the side and how it was used in graph


and second from ASP_HeroTPP_AnimBlueprint, also take note of var naming at the bottom, and how it was fetched from casted pawn owner’s graph.

See, they have totally different naming of bool vars, but it is crouchButtonDown(in Pawn BP) that sets the value of crouching(in anim BP) which ultimately drives the state machine.