Velocity in Projectile Movement component ignore in 4.3

Have just upgraded from 4.2.1 to 4.3.1 and the velocity setting on the Project Movement component of my blueprint is being ignored. When I first ran 4.3.1, the simulator was fine but it didn’t work when selecting Play; now (although nothing has changed as far as I can tell) even the simulator doesn’t allow it to move.

I have 4.2.1 still on another machine and it works fine.

Is there something that has been updated that may be causing this behaviour?

Hello again, Roddy.

I tried to reproduce this bug on my machine (on 4.3.1), but the Projectile Movement component is working as intended on my end. I used the Blueprint First Person Template, then I changed the Initial and Max speed of the Projectile Movement Component (Called 'Projectile") to 500. When I Play in Editor, the bullets fired are much, much slower than normal and they just kinda fall to the ground.

Can you try this, too? It might be a problem in your specific project.

Hi; apologies for the delay in responding… I tried again today to run it and I noticed that the position values were being correctly updated from the velocity though the actor wasn’t moving. This is happening on two separate laptops both running 4.3.1.
I have re-converted back to 4.2.1 and it works again… is most disconcerting as I have used over 6GB to download these updates to UE4 over the last few days (we have limits on our downloads in Australia unfortunately).

If the position values are being updated correctly but the actor is not moving, the actor may be Static. I assume they’re being produced at runtime - could you check that next time you test it?

Another possibility is that you’ve got a function that (unintentionally) sets the location of the projectiles on tick, but that shouldn’t allow the projectile location values to change.

I checked as suggested and the component is set to moveable (it is created as a blueprint and placed within the editor, it is not instanced in code). The components of the blueprint are a Projectile Movement component, An arrow (dummy) and the shape beneath the dummy. If I move the mesh to the root component, it now moves but I cannot use scaling and the overlap fails to fire.
In all that I have read on blueprints, the root component cannot scale so it is emphasised to use a Scene Component or an Arrow Component as a dummy.
I am really concerned over this change between versions; do I now have to start working differently than previously and (once again) work around the collisions and overlaps to get this to keep working?

Further to the comment above, I have noticed a small dialog box with a warning for the first time.

“Warning Movement component must update a PrimitiveComponent, but owning actor ‘BP…’ does not have a root PrimitiveComponent. Auto registration fails”

This seems to lead to a bit of a contradiction (for me); the root component cannot be scaled or provide collision (overlap) while if using an Arrow or Scene component, the above warning is given.

I have been reading other entries and documentation (like Components in Unreal Engine | Unreal Engine 5.2 Documentation) but am unable to determine the approach that I need to create a blueprint I can set the velocity.

I haven’t heard the advice about the dummy component before. The only reference I can find to an arrow used as a dummy component is here, but that’s a UDK question.

I tried using the arrow the way you suggested, but I’m getting the same results you are - the mesh can’t be scaled if it’s the root, and if the arrow is the root, the mesh doesn’t move.

However, if I leave the mesh as the root, I can still scale it in the level by clicking on it in the Scene Viewer and editing the numbers in its Scale entry. I can also scale it by calling Set Actor Scale 3D on Event Begin Play in the object’s Event Graph.

For speed, it looks like Velocity just sets the direction of the Initial Speed. That doesn’t seem very intuitive, so I’ll report that internally as something we could potentially improve upon. On your end, though, can you try changing the Velocity to the direction you want to go, and then set the Initial Speed to the speed that you want to go? I suspect that that will get what you want.

As for the overlap problem, what are you having trouble with specifically? If you’re having the projectile and another Static Mesh collide, you should be looking for a Hit event rather than an Overlap event. If the projectile is passing through some kind of Volume, then an Overlap event should fire. My projectile fires an Overlap event when it passes through my Physics Volume and fires a Hit event when it lands on the floor.

This is all in 4.3.1, I don’t know what differences there are between this version of the engine and 4.2.1.

Let me know if this helps.

Really appreciated the feedback. I spent the previous few weeks working out why a hit event wasn’t occurring and it turned out to be because both objects needed to be moving, so a hit event was changed to overlap. I seem to be going round in circles somewhat when encountering the issues being raised. There are quite a few entries in the answer hub about the root component being a scene (or arrow) and this now seems to be incorrect since the update to 4.3.1. I will give the initial speed and the scaling a try this weekend (to change all of the scripting yet again) but I am currently having to use workarounds for workarounds for what should be simple functionality.

Have removed the dummy component and the actor is now moving again; the reversal of direction by negating the velocity is no longer working (which made it appeared that the overlap was not activating).

The speed can only be set as initial and max, without the velocity, how do I change the current speed? Changing the velocity has no affect.

Well, I found this in the forums:

Simulate Physics interferes with the Projectile Movement component

Now I can no longer use collisions anyway, I have turned this off and it now works… might be worth putting this in the documentation (in big letters) as it is not obvious (well, to me anyway).

Thanks for your assistance as I would have made absolutely no progress without it.

To summarise the above, since upgrading from 4.2.1 to 4.3.1 (and now 4.4.0), the projective movement can only operate on a primitive root component (so the root component cannot be a Scene component or an Arrow component); this entails that the blueprint has to be scaled elsewhere.

The biggest issue was that Simulate Physics interferes with the Projectile Movement component, which was not obvious.

Hope this might help someone else who is stuck with the same issues.

What is a primitive root component?

This saved my day. I always add a root scene to component.

This is not explained on documentation, was starting to get crazy about it