Stop AI character snapping

I am using a AI character that uses root motion and every 3 seconds he chooses a random location to move to however as you can see in the video he snaps very unrealistically when he turns. I tried using a RInturp which seemed to fix the problem for this person AI Driven Locomotion with Root Motion - Community & Industry Discussion - Epic Developer Community Forums

but as you can see it doesn’t work for me, the character just keeps walking in the same direction.

I also tried this “In The Character Component – Uncheck Orient to Rotation Movement and In The Characters Movement Component – Check Orient Rotation To Movement” but that didn’t work either.

This is the bp I’m using.

You will have to fiddle around with the settings some more. I think they went over this in a livestream and even they had a problem making the AI interpolate correctly. They figured it out eventually. I think it was a physics based animation stream where they essentially made a massive horde of AI “zombies” driven by a ball collision model that rolled around(the zombies ran though, the ball was just for simplified path calculation). I don’t have the exact link, but I’m sure someone knows it.

It would at least be a nudge in the right direction.

EDIT: I can see right away what’s going on. I looked at your BP and when you set rotation like that, you’re making it snap to an angle. I’m almost positive that will completely override any form of interpolation that the controller might have.

You mean the find look at rotation node? Is there anything else I could use in its place?

At the far right, of that image, the set actor rotation node. By doing it that way, it will make the character pop to whatever position is sought. It looks like it wouldn’t be a problem once the character is oriented in it’s direction of movement. Example: Let’s say the character is running “north” and stops once it reaches it’s destination. It then finds another random point to move to but it’s “south-east” of where it’s currently at. The way you’re setup is working is it will make it immediately pop to that SE direction, but once it’s got it’s bearings straight, it won’t look weird. Basically, you’d need to interpolate to the direction FIRST, then move.

Now because you’re using root animations, I don’t know how easy or feasible it will be to make that kind of interpolation without sliding, or you can use a real animation for the little rotate foot shuffle. If you don’t want to use a regular foot shuffle animation, then you’d have to do a whole bunch of radial math to make a spline that will loop around and get the character in the correct direction. Here’s an example of what I mean. The point A’s arrow is the current direction of the character and B is where it needs to get to:

Personally, I wouldn’t recommend using root motion for this kind of thing. The engine isn’t really set up for this kind of stuff and you’ll miss out on a WHOLE lot of features that are already in the engine. +95% of the AI movement controls become useless to you. You’d need to write up a ton of code to really make it efficient and work properly.