Set up a Blueprint on my project a while back where, if the player shoots at a slope, the bullet bounce off it at a 90 degree angle, originally had the blueprint fire on the slopes OnHit event. Recently swapped out a bunch of assets in the project and moved the blueprint to the bullet object, except now I can’t change the direction of the bullet. I was using the Set Velocity In Local Space node, which was working. But now it doesn’t, even if I hard-code a vector. I know that the “Simulate Physics” setting can interfere with the Projectile Movement Control, but are there any other settings that can mess with it? I’ve also tried using Set Velocity, and moving the blueprint onto my new slope object, but that doesn’t work either. Really need help with this.
Hey @MKthot how are you?
In order to give you a good solution for that issue, it would be great if you can share your Bullet blueprint and its componenet’s config here, so I can check it and tell you what to change exactly!
There are a few settings and situations that can silently override or ignore velocity changes on a projectile, beyond just Simulate Physics conflicting with the Projectile Movement Component. So it’s really hard to understand the problem without checking your BP.
I’ll be waiting for your answer!
Not sure what all you would need to look at, but this is the Hit event for when the Bullet hits a slope (Ramp), there’s more but everything else was set up before I set up the original bounce mechanic that worked:
This is basically the CalculateReflectionVector function, there’s more, but right now it’s all being bypassed so the start node connects directly to the RotateActor node, it also has the settings for the Bullet object:
And these are the details for the Movement Component (bltMovement), the Collision Box (bltCollison), and the Sphere:
Have you tried replacing the event hit with an ActorBeginOverlap on an invisible ball around the bullet?
If that doesn’t work, you might want to add print strings in various places so you can figure out exactly where the problem is.
I’ve done that, that’s how I figured out that the Set Velocity In Local Space node is changing the velocity, but the actual in-game bullet’s movement isn’t changing to reflect the new velocity.
Okay, so I added a collision box to the slope actor and copied the blueprint to an On Component Begin Overlap event for the new collision box and… it works? I’m using a hard-coded vector of (-1000, 1000, 1000) and it does what it’s supposed to. So why doesn’t it work when I try to run it from the bullet actor’s event graph? According to the print nodes I put in, every node is doing what it’s supposed to do, the bullet’s projectile controller’s velocity is being changed, but the in-game actor won’t change direction to the new velocity unless I change it in the slope actor’s event graph.




