How To Make Multi Handles: Difference between revisions

From Goodblox Wiki
Jump to navigationJump to search
(Created page with "{{CatUp|Tutorials}} __TOC__ ==Rocket Propulsion And The Part== Create the RocketPropulsion and the part object. Alternatively, you could make a miss...")
 
(Redirected page to Tools)
Tag: New redirect
 
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]]

Latest revision as of 20:55, 23 June 2020

Redirect to: