I was trying to modify ALS and simplify it when after reopening the project (whose name is shorter than 20 characters) I noticed that in the viewport of the character subclass, called “humanoidv2fixed”, the character had the falling animation. I inspected the animation bp and it worked. the preview and edit values were correct (false), but the problem is the character uses a bp interface to communicate data to the bp anim. apparently the character movement returns the value “true” for no apparent reason. I verified this by adding a construction script that wrote the value returned by character movement and it’s true. I opened a third person template and it returned false. keep in mind that the project files have been migrated from ue4 directly to ue5. However, in the previous days I didn’t notice anything similar. If anyone can give me an explanation or help I would be grateful. I will attach the image files later
The movement component bases its result on findfloor - if the preview window has nothing as a floor and the character is currently simulating, it makes sense it wants to fall.
Normally, persona (in 4.x at least) does not simulate the character movement, the idle plays, whatever you toggle the value of plays, but since there is no sim, the movement component is not in a state to return values.
Because you are making it return values anyway, then no floor = fall…
As a side note:
Not to knock on your interface idea, but once again le’s remind everyone that having any code in the animation blueprint is wrong.
It seems quite clear to me that if the floor is not there in the simulation, it returns that it is falling. But I never talked about simulation. The part of the anim graph that manages jumping and falling is the same as the third person template. However, in the third person template the character in the bp class viewport does not fall, and this is absolutely normal, even though there is no floor. To reproduce the problem in the third person template I used a bp interface that manages the data, and the component is used only in the character, exactly like in my project. by doing so, the animation remains idle in the modified template, while in my project the character falls. However, the problem is not caused by the animation bp, but it’s caused by the character movement as I have shown from the screenshots of the construction script log: the character movement in the same conditions returns is falling at different values. Why?
PS: whether or not to use interfaces and code in anim bp is a choice of the developer since ue allows you to use code in anim bp, even if this affects performance, but this is not at all comparable to the functioning of the program. Best regards; I attach explanatory images in case they are necessary
Try and see if the class defaults have been altered.
But again, I believe the problem is you are actively querying for the state via interface call.
If that value is ever queried when a floor does not exist, then the state and animation will logically update accordingly.
If no one is calling bpigetessentialvalues - then one of your default values must be set incorrectly.
Btw, when you query the state, even via interface call, the state will run a check and return what it finds as of it were simulating - its not just going to give you the stored value unless you code it specifically that way - maybe pass by reference.
Maybe that’s what you need…
I avoided using a bp interface in the example shown, and the result is the same. however, fortunately, I realized that instead of using is falling I could use getmovementstate=falling (I think that’s what the node was called). I solved the problem even if not in the best way, but it is only a preview in the viewport and not the runtime.