I want to make a part fly off towards the direction it's facing when a player touches it. I can get the direction with lookVector, but how would I apply that to something, like BodyVelocity?
Velocity
is both the speed and the direction of a Part. lookVector
is also a direction, so you can set it directly:
part.Velocity = part.CFrame.lookVector * bigNumber
You need to multiply it by a big number so that it will have more speed.
Here's some code for a missle from a plane - basically BodyVelocity.velocity is set to the lookvector of a part and multiplied by the speed you want it to go forward.
function FireMissile(Gun) --This function creates the non-guided missiles for the missile spawns if (not Locked) then local Exploded = false local Part1 = Instance.new("Part") Part1.Name = "Missile" Part1.CanCollide = false Part1.FormFactor = "Symmetric" Part1.Size = Vector3.new(1,1,5) Part1.BottomSurface = "Smooth" Part1.TopSurface = "Smooth" local Mesh = Instance.new("SpecialMesh") Mesh.Parent = Part1 Mesh.MeshId = "http://www.roblox.com/asset/?id=2251534" Mesh.MeshType = "FileMesh" Mesh.TextureId = "http://www.roblox.com/asset/?id=2564491" local Part2 = Instance.new("Part") Part2.Parent = Part1 Part2.Name = "Visual" Part2.Transparency = 1 Part2.CanCollide = false Part2.FormFactor = "Symmetric" Part2.Size = Vector3.new(1,1,1) Part2.BottomSurface = "Smooth" Part2.TopSurface = "Smooth" local Weld = Instance.new("Weld") Weld.Parent = Part1 Weld.Part0 = Part1 Weld.Part1 = Part2 Weld.C0 = CFrame.new(0,0,5)*CFrame.Angles(math.rad(0),0,0) local BV = Instance.new("BodyVelocity") BV.Parent = Part1 BV.maxForce = Vector3.new(math.huge,math.huge,math.huge) local BG = Instance.new("BodyGyro") BG.Parent = Part1 BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge) BG.cframe = Gun.CFrame * CFrame.Angles(math.rad(0),0,0) local Fire = Instance.new("Fire") Fire.Parent = Part2 Fire.Enabled = false Fire.Heat = 25 Fire.Size = 30 local Smoke = Instance.new("Smoke") Smoke.Parent = Part2 Smoke.Color = Color3.new(40/51,40/51,40/51) Smoke.Enabled = false Smoke.Opacity = 1 Smoke.RiseVelocity = 25 Smoke.Size = 25 local PlaneTag = Instance.new("ObjectValue") PlaneTag.Parent = Part1 PlaneTag.Name = "PlaneTag" PlaneTag.Value = Plane Part1.Touched:connect(function(Object) if (not Exploded) then if (not Object:IsDescendantOf(Character)) and Object.Name ~= "Missile" then Exploded = true local Explosion = Instance.new("Explosion") Explosion.Position = Part1.Position Explosion.BlastPressure = 50 Explosion.BlastRadius = 5 ScanPlayers(Part1.Position,5) Explosion.Parent = game.Workspace Part1:Destroy() end end end) Part1.Parent = game.Workspace Part1.CFrame = (Gun.CFrame * CFrame.Angles(math.rad(0),0,0)) + Gun.CFrame.lookVector * 15 BV.velocity = Part1.CFrame.lookVector * Engine.Velocity.magnitude delay(.03,function() BV.velocity = (Part1.CFrame.lookVector * 1000) + Vector3.new(0,0,0) Fire.Enabled = true Smoke.Enabled = true end) delay(5,function() Part1:Destroy() end) end end
Speed and Direction and both controlled by the velocity. here's and example
function fire(d) Part.Position = script.Parent.Part.Position + (d*5) Part.Velocity = d*100 end
so the *5 is how far it will be pushed from the part(not how far overall) and *100 is how fast it will be pushed higher the number faster it goes.