Alright, So lets begin. I need a way to make the barrel of my cannon move up and down with the script, the cannon is attached to a Boat, and it's Pivot's rotation is independent of the boat. How would I go about doing this? I also would like to be able to incorperate firing cone of about 15? from the top. So rather than a 90? Firing cone it would only be 75?
What is the correct way to Collet the Mouses Y Axis location and parse it correctly to always be between 0-75? and facing the Front face towards the end of the barrel, I also need it to be able to return the angle? What would be the C-Framing magic needed for this? Calc(int) was a method I devised as an attempt before.
--==LOCAL SCRIPT==-- --Variables mouse=game.Players.LocalPlayer:GetMouse() Rotor=Workspace.Model.Rotor ScreenY=game.Workspace.CurrentCamera.ViewportSize.Y minAngle=0 maxAngle=75 Gun=Workspace.Model.Gun function Calc(Y) local Res=math.rad((ScreenY*Y/90))--Ratio'd using Result/2Pi=90y/90 -- 90y= 90*y == ScreenY*Y --If Resulting angle >75 if Res>maxAngle then return maxAngle --If Result angle <0 elseif Res <minAngle then return minAngle --If Result is not defying the limits else return Res end end while wait() do --RelativeReferenceFrame RotorPos = Rotor.Position --UnitVector of Direction dir = (mouse.Hit.p - RotorPos).unit --Setting the Offset of RotorWeld to (0,1.5,0)*(0,inverseTangent of dir.X/-dirZ + pi,0):inverse() --Basically rotating on the Y axis with the mouse. Rotor.RotorWeld.C1 = CFrame.new(0,1.5,0) * CFrame.Angles(0, (math.atan2(dir.X, -dir.Z) + math.pi), 0):inverse() --I still need a way to retrive the angle properly on the local reference frame. --offsetH=math.cos(angle)*Gun.Size.Z --offsetV=math.sin(angle)*Gun.Size.Z --Move the X Axis in this case which controls the up down movement of the barrel, --Set the offsets correctly. Gun.GunWeld.C1 = CFrame.new(0,0,0)*CFrame.Angles(0,0,0)--Im clueless e.e end