What is the best method for tracking movement and passing that to 2 bools?

I tried asking in this thread: BP Logic Question - Filling Up A Stat - Blueprint - Unreal Engine Forums but although there were some supportive suggestions nothing seemed to pan out.

Simply put, I want the default state to of the player to be idle (bIsIdle). When the player moves at all it will no longer be idle but instead (bIsMoving).

Once bIsMoving == True it will check three more cases (bIsSneaking, bIsWalking, bIsRunning).

Any help on getting this started would be amazing. I missing the logic here. I am able to get individual parts to work but I cannot get them all to work together at all. I have been through everything from infinite loops, to just not responding to input at all but i can’t seem to get this one sorted out.

Thanks for any help.

Okay I have had a go at achieving this. Please take a look at the following blueprint (There may be better ways to do this, I just chucked this together really quickly to give you an idea of how to do it)

Basically on each tick, I do the following:

I check if there is any velocity on the character, if so then they are moving. (Red box)

Then I check if they are currently crouched (Just my version of sneaking). If not then I check the current speed (This is a parameter in the animation blueprint I am using, which is just a copy of the third person animation blueprint). If the speed is less than 95 (Just an arbitrary number, may need to be tweaked). Then the character is walking, otherwise they are running. (Blue box)

After setting all the bools I then use them to display some text above the characters head (Green box) to show what is happening.

Check the following movie to see it in action:

Okay this makes sense for the most part. I run into a couple of snags. First the Text Rendering, what node is that out of the Set Text (Target) node?

The other issue I run into is casting… so for run I am currently just using left shift and for sneak right shift so the movement is not actually animation based but input based. Do you recommend using the animation over the input? The reason I ask is because I do not have specific animations tied to the movement yet nor do I know how to cast that data out of the animation node. Everything is very basic right now.

Also Idle is a bool as well and it is driving a cool down function. So out of the first bool branch, false sets the text to idle but not the state. Where would I set the idle state?

First the Text Rendering, what node is that out of the Set Text (Target) node?
Its a text render component added to my character in the components section

The other issue I run into is casting... so for run I am currently just using left shift and for sneak right shift so the movement is not actually animation based but input based. Do you recommend using the animation over the input? The reason I ask is because I do not have specific animations tied to the movement yet nor do I know how to cast that data out of the animation node. Everything is very basic right now.

It shouldn’t matter how you do the movement, the red box should still work. The blue box would need some rework. I’ll put together a blueprint for input based movement with no animations and upload when I get a chance.

Also Idle is a bool as well and it is driving a cool down function. So out of the first bool branch, false sets the text to idle but not the state. Where would I set the idle state

You could extend the red box and set bIsIdle to NOT of bIsMoving.