Base Idle Animation, Random Idle Animation (from a vast range), Base Idle Animation, LOOP

Cool trick! It works like using Blend Poses by int, the problem is still the same: it doesn’t return to Base Idle after ending a Random Idle.

Let’s pretend Base Idle is 0, and, Random Idle is a random number between 1 and 8.
This is how it has to go: 0, 2, 0, 5, 0, 8, 0, 3, 0, 7, 0, etc…

Do you understand?

That’s odd, it seems Random Sequence Player doesn’t behave like other nodes. It just loops through the array forever. You’ll have to do it the way I described earlier then.

maybe each animation needs to be specifically set not to loop? Never tried it, just seems wierd that it wouldn’t behave like everything else…

Seems like you can set the entries to loop 1 time each, but it still runs through the entire array before exiting the state

Edit: Actually nope, it still loops forever even if you set loop count to 1

Ok, then…

Which one of these Anim Sequence variable type do I have to choose?

Test--Unreal-Editor-4_30_2020-10_35_38-AM.png

Object reference

You can also use an Interface to direct animation flow. The Interface Function sets a bool on the Animation Blueprint (AnimBP) the blendspace then switches the state accordingly.

G-day!, and thanks for your supportive, satisfactory and kind answer!
I can’t seem to find the option Time Remaining (ratio). Do I have to do something to unlock it?

Test--Unreal-Editor-4_30_2020-4_57_02-PM.png

Once you set a State - used to only play a animation once (hence disable the loop option for this anim), the following inbetween connection, can have a time ratio remaining. To add it, right click type ‘time ratio’, this should automatically catch up the name of the previously used animation name (from the prior state).

GREAT! Thank you!
I noted you have many Blueprints… How many blueprints do I need to accomplish[FONT=courier new] Base Idle is 0, and, Random Idle is a random number between 1 and 8. This is how it has to go: 0, random int from 1 to 8, 0, random int from 1 to 8, 0, random int from 1 to 8, 0, random int from 1 to 8, 0, random int from 1 to 8, 0, etc… this? I was thinking that maybe you sent me screenshots of what you did with your project, and not of what I need to do to complete mine. So, I wonder if you can tell me: how can I complete my project? Which again, is: [FONT=courier new]Base Idle is 0, and, Random Idle is a random number between 1 and 8. This is how it has to go: 0, random int from 1 to 8, 0, random int from 1 to 8, 0, random int from 1 to 8, 0, random int from 1 to 8, 0, random int from 1 to 8, 0, etc…
Do I really need to Set a Task? Because I can’t find it in my (only) Blueprint… :confused:

Curiosity: I disabled the loop option for the animation, from State Machine > First State > select the animation and un-check Loop Animation and didn’t click Compile, and in the transition in-between the two states I was finally able to find the Time Remaining (ratio). Then I returned to the First State, selected the animation and checked Loop Animation again and clicked Compile, returned to the State Machine and enter the transition in-between the two states, and I was still able to use the the Time Remaining (ratio). Then I wondered why I couldn’t find it before un-checking the Loop Animation box. May be a bug.

Help Requested! I almost solved this problem in a simple way! I just need a tiny little help… Remind well what’s the purpose of this Topic:

Now that your memory is refreshed, study the Animation Blueprint, please.

▼ This is the Event Graph of the Animation Blueprint:

▼ This is the Locomotion:

▼ This is the first State of the Locomotion:

▼ This is the Transition from the 1st State to the 2nd State:

▼ This is the second State of the Locomotion:

▼ This is the transition from the 2nd State to the 1st State:

▼ This is what it does:

The problem is probably in the Event Graph.

If a Delay is used, then the next animation won’t play after the very end of another animation. Something better than Delay is needed, can you tell What it is, please? :slight_smile:

You can call your animation blueprint, idle integer variable and set it to 0, then set the bool to enter the idle state to idle true, otherwise you make a random integer in range to roll the idle animation. However, the default idle animation is usually located inside your current assigned animation blendspace, processed when speed is 0.

What this essentially does, not much, it is redundant. The integer can be set on start per


If you however roll it continuously it will not play animations to the end. Thus, only play a new idle animation after some time has past. Thus, you could create a Blueprint Interface, attach it to your character and animation blueprint under class settings, create a interface function with a integer and bool input, then call this function on your character tick when right click, type ‘message nameofmyinterfacefuntion’, then on your animation bp setup the interface message event, right click in the EventGraph, type ‘event myinterfacefunctionname’ then connect the pins with your corresponding integer and bool. Because now on the player the tick function messages the anim bp also continuously, we could facilitate this with a counter logic, thus add a bool on the event tick, add a counter integer, like this for example,


However you can also call the anim bp function we a just added, via a behavior tree or basically from anywhere else. The counter times need to be tweaked to play the idle animations long enough. Ideally each idle animation play to the end before switching to a new, which again would mean to use a time ratio, play animations only once, hence have some sort of state rotation.

I feel very confused, too many terms I still don’t understand, so many questions… Do you think what you said will solve definitely the purpose of this topic? Or is there a more simple, intuitive way, like adding a node in this Event Graph?

In case you think this…:

…will solve the problem, can you please tell me: What does the “character ticking” is?

… you need to watch more tutorials and use the editor more. Also, search for things. I’m sure you could.easily find what character ticking is.
it refers to the Tick group for the character actor.

You originally asked what to use instead of a delay.
Try a single frame delay.
you can do so by creating 2 delay nodes in a row and setting their delay time to 0.
however you will still be looping through the update animation event endlessly, and at the rate that the class default settings say you should…

use an animation notify to set that variable instead.
eady performance improvement…

Also, the transition back should be possible by getting the time remaining fraction of the state rather then the individual animations.
I think you have the individual aniamtions because of the blend bone by int node maybe, but are you sure there is no option for Idle Random when you search for “remaining”?

I searched on the Web what “character ticking” is before posting the question. Apparently there is no definition for “character ticking”, nor for “Tick group for the character actor”. There is a definition for Actor Ticking, which is probably what you meant:

I found it here: https://docs.unrealengine.com/en-US/…ing/index.html

MostHostLA, I added the two Delay in a row with Duration 0. But I have to still solve the purpose of this Topic. You continued:

Do I have to use the Animation Notify in the Event Graph and connect it to Delay’s Duration? That seems impossible. How do I do it? If it was possible, I probably would have to set a Notify at the end of every Idle Random Animation, and connect it to Delay’s Duration. Will you tell me how?

Also, what is “ready performance improvement”? Is that an option I have to enable, or something else?

To answer your question

I actually found the “Get Relevant Anim Time Remaining Fraction (Idle Random)” node. I understand that it takes the fraction of the time remaining for the most relevant animation of the state source (which is Idle Random). It does the same of what I did here with 9 nodes:

And it does it with only 2 nodes:

If what I understood is the truth, it’s a relief. For all those who like simplicity, too.

Hey unit23, what does this mean?

Sorry, it’s my first time using Blueprint Interface on Unreal Engine 4. Can you tell me how to connect it to my Character and to my Animation Blueprint? I went to 3 different Class Settings: Blueprint Interface’s Class Settings (Parent Class is disabled); Animation Blueprint’s Class Settings (Parent Class can’t find my Blueprint Interface); and ThirdPersonCharacter’s Class Settings (Parent Class can’t find my Blueprint Interface). Is it because the Blueprint Interface is empty? Then how do I create “a interface function with a integer and Boolean input”? I can’t seem to be able to Edit the Blueprint Interface, since it’s in “read only” mode. Help.

I actually solved the problem somehow. Can you explain me why it’s working?

I used the Call Function of ONE Animation Sequence to Reset the Do Once… Why is it working, then? :mad:

Probably because you are now using an animation notify instead of running the code over and over.

Every transition node and state with the state machine allows for 3 different notifies that you can type the names of.
this is useful in your case, so that you won’t need to add the notify to every idle state.
as with every notify, they are bound to frame rate. You need to read up on that and test to decide what is best.

As far as what I meant, it as Easy performance improvement.
autocorrect decided otherwise. Apologies.

If you want us to tell you exactly why it is working, we need the video of the state machine and a screenshot of the transition states as well…