Hello! Thanks for clicking on this question. I'm trying to make a ladder placement tool. When the player equips the tool and clicks somewhere on the ground, the ladder is supposed to appear on the ground, and it's supposed to become visible and anchored. The problem is, it won't place the ladder... it just places a block. I've provided the scripts, the children of the tool, and the link to the tool. Thanks!
https://www.roblox.com/library/2267143474/Ladder-placement-not-working
Tool:
--NOT A SCRIPT JUST THE LAYOUT OF THE TOOL
Ladder placement -- tool name
Handle
Mesh
placementone--script
placementtwo--script
placementone--script
updateInterval = 0.4
function update()
updateInterval = updateInterval * .9
end
function onTouched(hit)
local weld = Instance.new("Weld")
weld.Part0 = script.Parent
weld.Part1 = hit
local temp = CFrame.new((script.Parent.Position + hit.Position) * 0.5)
weld.C0 = script.Parent.CFrame:inverse() * temp
weld.C1 = hit.CFrame:inverse() * temp
weld.Parent = script.Parent
connection:disconnect()
while updateInterval > .1 do
wait(updateInterval)
update()
end
end
connection = script.Parent.Touched:connect(onTouched)
placementtwo--script
Tool = script.Parent
VELOCITY = 85
local Pellet = Instance.new("Part")
Pellet.Locked = true
Pellet.BackSurface = 0
Pellet.BottomSurface = 0
Pellet.FrontSurface = 0
Pellet.LeftSurface = 0
Pellet.RightSurface = 0
Pellet.TopSurface = 0
Pellet.Shape = 0
Pellet.Size = Vector3.new(1,1,1)
Pellet.BrickColor = BrickColor.new(2)
script.Parent.placementone:clone().Parent = Pellet
script.Parent.Handle.Mesh:clone().Parent = Pellet
function fire(mouse_pos)
local vCharacter = Tool.Parent
local vPlayer = game.Players:playerFromCharacter(vCharacter)
local head = vCharacter:findFirstChild("Head")
if head == nil then return end
local dir = mouse_pos - head.Position
dir = computeDirection(dir)
local launch = head.Position + 5 * dir
local delta = mouse_pos - launch
local dy = delta.y
local new_delta = Vector3.new(delta.x, 0, delta.z)
delta = new_delta
local dx = delta.magnitude
local unit_delta = delta.unit
local g = (-9.81 * 20)
local theta = computeLaunchAngle( dx, dy, g)
local vy = math.sin(theta)
local xz = math.cos(theta)
local vx = unit_delta.x * xz
local vz = unit_delta.z * xz
local missile = Pellet:clone()
missile.Position = launch
missile.Velocity = Vector3.new(vx,vy,vz) * VELOCITY
missile.placementone.Disabled = false
local creator_tag = Instance.new("ObjectValue")
creator_tag.Value = vPlayer
creator_tag.Name = "creator"
creator_tag.Parent = missile
missile.Parent = game.Workspace
end
function computeLaunchAngle(dx,dy,grav)
local g = math.abs(grav)
local inRoot = (VELOCITY*VELOCITY*VELOCITY*VELOCITY) - (g * ((g*dx*dx) + (2*dy*VELOCITY*VELOCITY)))
if inRoot <= 0 then
return .25 * math.pi
end
local root = math.sqrt(inRoot)
local inATan1 = ((VELOCITY*VELOCITY) + root) / (g*dx)
local inATan2 = ((VELOCITY*VELOCITY) - root) / (g*dx)
local answer1 = math.atan(inATan1)
local answer2 = math.atan(inATan2)
if answer1 < answer2 then return answer1 end
return answer2
end
function computeDirection(vec)
local lenSquared = vec.magnitude * vec.magnitude
local invSqrt = 1 / math.sqrt(lenSquared)
return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
end
Tool.Enabled = true
function onActivated()
if not Tool.Enabled then
return
end
Tool.Enabled = false
local character = Tool.Parent;
local humanoid = character.Humanoid
if humanoid == nil then
print("Humanoid not found")
return
end
local targetPos = humanoid.TargetPoint
fire(targetPos)
wait(.2)
Tool.Enabled = true
end
script.Parent.Activated:connect(onActivated)

1 comment
"script.Parent.Bomb:clone().Parent = Pellet" what is "Bomb" ?