|
|
Line 1: |
Line 1: |
| {{CatUp|Tutorials}}
| | #REDIRECT [[Tools]] |
| __TOC__
| |
| ==Rocket Propulsion And The Part==
| |
| Create the RocketPropulsion and the [[GBX.lua.Part (Object)|part]] object. Alternatively, you could make a missile with rocketpropulsion without a target, and put it in [[GBX.lua.Lighting (Object)|Lighting]], then [[Clone (Function)|clone]] the rocket.
| |
| | |
| ===Defining the target===
| |
| This requires a [[GBX.lua.Script (Object)|script]]. The script will define the target's [[Position (Property)|position]], the thing you want to home in on!
| |
| | |
| Example:
| |
| <pre>
| |
| game.Workspace.Part.RocketPropulsion.Target = game.Workspace.yourusernamehere.Head
| |
| </pre>
| |
| | |
| ===Firing The Part===
| |
| This also requires a [[GBX.lua.Script (Object)|script]], this will set off your part (If Unanchored) after The Target:
| |
| | |
| Example:
| |
| <pre>
| |
| game.Workspace.Part.RocketPropulsion:fire()
| |
| </pre>
| |
| | |
| ===Additional Features===
| |
| | |
| The [[CartoonFactor]] property sets whether your part should head Directly towards it, ignoring the point its facing, or whether it faces straight at you. 1 Would be always facing at you. 0.5 Would be sort of facing you. 0 would be No effort to face you.
| |
| | |
| :[[Abort (Function)|abort()]]
| |
| This, as its name suggests, aborts the RocketPropulsion's mission to get to you, you could use this if your objects need fuel, and when the fuel is 0 they drop out of the sky.
| |
| | |
| ===Connecting The Event===
| |
| | |
| You would need to do something like:
| |
| <pre>
| |
| function onTouched(hit)
| |
| local a = hit.Parent.Humanoid
| |
| if a ~= nil then
| |
| local b = game.Lighting.Rocket
| |
| b.Position = Vector3.new(0,200,0) -- drop out of sky
| |
| b.Parent = game.Workspace
| |
| b.RocketPropulsion.Target = hit
| |
| wait(0.01)
| |
| b.RocketPropulsion:fire()
| |
| end
| |
| end
| |
| script.Parent.Touched:connect(onTouched)
| |
| </pre>
| |
| | |
| This is what you might use in some place:
| |
| | |
| <pre>
| |
| a = Instance.new("RocketPropulsion")
| |
| a.Target = game.Players.PERSONNAME.Character.Torso
| |
| a.Parent = game.Players.Name.Character.Torso
| |
| </pre>
| |
| | |
| == Another homing brick example ==
| |
| | |
| * Insert > Object > Part<br>
| |
| * The name of this brick part is insignificant.<br>
| |
| * Insert > Object > NumberValue into the Part.<br>
| |
| * Set NumberValue to 0.20000000000000001 and call it "Speed".<br>
| |
| * Insert > Object > BodyGyro into the Part.<br>
| |
| * Insert > Object > BodyPosition into the Part.<br>
| |
| * Insert > Object > Script into the Part.<br>
| |
| | |
| In the Script, insert the following:
| |
| | |
| <pre>
| |
| bin = script.Parent
| |
| | |
| function move(target)
| |
| local dir = (target.Position - bin.Position).unit
| |
| local spawnPos = bin.Position
| |
| local pos = spawnPos + (dir * 1)
| |
| bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos, pos + dir)
| |
| bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
| |
| end
| |
| | |
| function moveTo(target)
| |
| bin.BodyPosition.position = target.Position
| |
| bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
| |
| end
| |
| | |
| function findNearestTorso(pos)
| |
| local list = game.Workspace:GetChildren()
| |
| local torso = nil
| |
| local dist = 1000
| |
| local temp = nil
| |
| local human = nil
| |
| local temp2 = nil
| |
| for x = 1, #list do
| |
| temp2 = list[x]
| |
| if (temp2.className == "Model") and (temp2 ~= script.Parent) then
| |
| temp = temp2:findFirstChild("Torso")
| |
| human = temp2:findFirstChild("Humanoid")
| |
| if (temp ~= nil) and (human ~= nil) and (human.Health > 0) then
| |
| if (temp.Position - pos).magnitude < dist then
| |
| torso = temp
| |
| dist = (temp.Position - pos).magnitude
| |
| end
| |
| end
| |
| end
| |
| end
| |
| return torso
| |
| end
| |
| | |
| function shoot(pos)
| |
| dir = (pos - bin.CFrame.p).unit
| |
| for i = 1, 50 do
| |
| local ex = Instance.new("Explosion")
| |
| ex.BlastRadius = 1
| |
| ex.Position = bin.Position + (dir * 10 * i) + (dir * 7)
| |
| ex.Parent = game.Workspace
| |
| end
| |
| end
| |
| | |
| function shootAt(torso)
| |
| local dir = (torso.Position - bin.Position).unit
| |
| local spawnPos = bin.Position
| |
| local pos = spawnPos + (dir * 1)
| |
| shoot(pos)
| |
| end
| |
| | |
| while true do
| |
| local torso = findNearestTorso(bin.Position)
| |
| if torso~=nil then
| |
| move(torso)
| |
| moveTo(torso)
| |
| end
| |
| wait()
| |
| end
| |
| </pre>
| |
| | |
| This will make a brick that will follow you.
| |
| | |
| | |
| ==See also==
| |
| | |
| *[[GBX.lua.RocketPropulsion (Object)|Rocket Propulsion]]
| |
| *[[Scripting]]
| |
| | |
| [[Category:Scripting Tutorials]] | |