Let's say you have an horizontal object constantly shooting another object horizontally at a constant velocity.
It's easy to make this, as it corresponds likely with the coordinate axis.
Projectile.Velocity = Vector3.new(ShotVelocity, 0, 0);
Now let's say you wanted to rotate the object upwards so that it would shoot projectiles out at the same velocity but at a different angle. Let's say it's 15 degrees higher than the horizontal
Projectile.Velocity = Vector3.new(ShotVelocity*math.cos(math.rad(15)), math.abs(Shot.Velocity*math.sin(math.rad(15)),0))
Given this general relationship, how would you model a brick that shoots objects out at a relative direction it is facing using a consistent velocity? By relative direction, I specify using the part's Rotation Property.

4 comments
Thankn you so much for this alternative answer - though I can't say I understand the CFrame operations performed. Is there a tutorial on CFrame operations that you could link me to? The Roblox Wiki one is a bit to much for me.
https://scriptinghelpers.org/questions/37893/how-does-a-cframe-work-and-what-are-it-functions#40322
when I create "cannon" I just multiply by CFrame.Angles, which is similar to using the "rotation" property. When I get "dir": I get the direction the cannon is facing with .upVector. But I have to rotate the cframe again because directions normally face out of the side, not the top like I want. for target I use dir like a ray to create a theoretical position that the cannon is looking at. Of cours
e dir*speed is simply velocity.