Long title aside, I'm trying to make a block that when you step on a button, it Cframes itself out a bit (already coded), and "launches" itself at the player. I would like to accomplish this by using a one-time set velocity, meaning the player can dodge it if they're quick enough, and it won't keep targeting them if they move.
As you can see by my decent rep, I'm not requesting a script, I'm mostly looking for information on how to even accomplish this.
What I've tried so far --
Creating a script that, when the player's state is changed, it checks their head's position and then sets that as a CFrame value (of which I know very little about) inside of server storage. The value of the CFrame value is then set as the block's velocity whenever the player touches the button.
This, of course, isn't working. I realize it sounds easier to just code the velocity relative to the button, but I plan on making the flung object random, and the button itself is more comparable to a floor.
- I don't even believe setting the head's position to the velocity would work correctly, since it largely functions like a TranslateBy.
If you know another method, or a way to "repair" the method stated above, I would love to know. It's probably clearly evident that this is one of my lesser zones of RBX.Lua.

3 comments
Don't worry, I'd have no reason to downvote; even if an idea doesn't fully work, it lets me know about new things to try. I've not yet had the time, but will be implementing this system tonight. I'll get back to you with the results!
Alright, I just tried it, and it mostly worked for the purposes needed! Instead of using BodyForce (since RocketPropulsion doesn't change velocity), I instead used the line "script.Parent.Velocity = script.Parent.CFrame.lookVector * 40" to achieve the desired effect. Thank you for the help!
Your welcome. Also thank you for teaching me how you did it too!