Solving unevent projectile movements

Hey guys.
I’m trying to make some sort of bullet hell/shmup with a heavy focus on projectile patterns, and as such, I need precise and accurate projectile movements.

So I’ve made my own component for projectiles in order to get more control over it, but I’ve run into this issue

As you can see, the projectiles aren’t properly spaced, and when looking at them using step-by-step, I noticed they had some kind of jittery movement. Which I can’t find the origin of.
This is what the component’s blueprint looks like

I’d be glad if anyone could point out to what I am doing wrong, I’ll add that I’ve tried making only one AddActorLocalOffset and it didn’t change anything, and increasing/decreasing the timer didn’t either, it only smoothed out the problem once it went fast enough.
Also, the Velocity variable stays constant throughout the projectile’s travel path.

The problem of your set up is that even if you have a fixed time when the event should fire, you cannot be sure that it fires exactly after that time.

Instead of a timed event, call your code to move the projectle in the tick event and multiply the velocity with the “Delta Seconds”, this is the usual way to move objects in a simulation and you will get a smooth movement, indepent of your framerate.

That did the trick. I replaced the Begin/Do/Stop event with ActorSetTickEnabled (true or false depending on moving or not) and made the component not tick by default for those who are curious.
Thanks a lot.

Just an additional question, I’m noticing the projectiles now spawn sometimes with a little bit of varying delay between each other, is there any way to reduce that ? I’m using a timer by function name for that.

As I know, timer function or events, do not fire before the time has passed, but you cant be sure that they won’t fire a bit later.

You could improve it, be manually calulating the time that has passed in Tick event, with “GetGameTimeInSeconds” and fire when enough time has passed but for what I know, you cannot be absolutly correct with that.

Well, that’s a bummer. But it shouldn’t be too noticeable when playing the game at a steady framerate, with more elements going on, so I guess I’ll just have to ignore it then. Thank you again.