How do I add an impulse rotation that rotates the object along the direction thrown

Hi friends. First time posting here with a question, I hope I’m doing it correctly.

I’ve created a Blueprint Projectile for a a War Axe. My goal is quite simple, I want to throw the axe in the direction the camera is currently facing.

I’ve got this working up to a point. I hit space-bar, it spawns a new axe and adds an impulse to it so it goes launching in the forward facing direction. However, I would love to add a spinning effect to the axe when it is thrown. Imagine you throw an axe and it should spin in the direction thrown.

I’ve messed around quite a bit with the add angular impulse in xx options but no matter the configuration, I cannot get it to spin correctly. I get the feeling there may be some more complex math involved that I am not familiar with and not sure how to proceed.

Here is my blueprint:

I’ll try to upload a gif to show what it looks like.
ezgif.com-gif-maker

To achieve a rotation you need to apply an angular impulse not a (linear) impulse. The actor you apply the angular impulse to needs to be simulating physics in order to react properly to it. Secondly, a rotation impulse is applied “around” a rotational axis. In the case of your axe, you want to apply it around its right vector so it rotates on a plane which contains its trajectory.

Hi @vr_marco! Thank you for taking the time to help me out.

I re-added the angular impulse node that I was using before. I’m able to get it to work, mostly.
It spins but only when I’m facing the -x or x direction. If I am facing any other angle, then the axe rotates sideways, too.

Here is my BP, can you see anything wrong with it?

Physics impulses need to be added in World Space, so the input Impulse vector to your angular impulse has to look like your linear impulse below, except that you need to use the Right vector of your axe actor multiplied by a float.

2 Likes