So I have started making some cannons on my game and I have them fully scripted besides one thing, when it fires I want the cannon to go back a little bit and go forwards again, but since it’s a group I have no clue how to do that, can anyone tell me how?
If you weld the parts to a central part you can apply the same methods you would usually use.
I attempted to use this but don’t know what kind of code to use to move a part? I haven’t used Vector3 or CFrame code before,
Cannon.CFrame *= CFrame.new(0,0,2)
The easiest option would be to just use a reversible tween. Otherwise you just need a bit of maths, you could probably just apply some kind of parabolic function.
As @PerilousPanther stated, a tween is probably best. You can change the EasingStyle to get the best movement.
Okay! I will try this out and let you know if it worked.
whats that?
A parabola is a mathematical graph, similar to what a rock thrown at a vertical angle will look like.
Google probably has a better description than I can give you.
yea i think i need to be in university to understand that
Bounce would be the best option.
If you’ve ever seen a cannon recoil it doesn’t generally Bounce.
Quint or Exponential are probably the best bet, with EasingDirection Out.
@pie, it isn’t difficult to visualize, but yes, the calculations can be a bit daunting.
Not really. It’s pretty basic math:
local part = workspace.EasingPart
local X = part.Position.x
function Parabola(i)
return (i)^2 + (X-25)
end
while wait(1) do
for i=-5.2,5.2,0.2 do
wait(0.01)
part.Position = Vector3.new(Parabola(i), part.Position.Y, part.Position.Z)
end
end
I would still suggest using tween though. It would be more efficient. You also remove a lot of the complexity involved in programming a parabolic function based on direction of fire.