Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

how to explain this thing mathematically?

so can u like explain to me the script in the link?(credit the link)

--(Assuming the script is within the bullet)

local bullet = script.Parent

bullet.Touched:connect(function(hit) if hit:IsA("Part") then

local sides = {} local sizes = Vector3.new(hit.Size.X,hit.Size.Y,hit.Size.Z) local pos = hit.Position sides[1] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(0,0,-hit.Size.Z/2))--front sides[2]= pos + hit.CFrame:vectorToWorldSpace(Vector3.new(0,0,hit.Size.Z/2))--back sides[3] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(hit.Size.X/2,0,0))--right sides[4] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(-hit.Size.X/2,0,0))--left sides[5] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(0,hit.Size.Y/2,0))--top sides[6] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(0,-hit.Size.Y/2,0))--bottom

local ClosestSide = 1 for i,v in ipairs(sides) do if (bullet.Position - v).Magnitude < (bullet.Position - sides[ClosestSide]).Magnitude then ClosestSide = i end end

if ClosestSide == 1 then print("front") elseif ClosestSide == 2 then print("back") elseif ClosestSide == 3 then print("right") elseif ClosestSide == 4 then print("left") elseif ClosestSide == 5 then print("top") elseif ClosestSide == 6 then print("bottom") end end end)


i need to know how to explain this script. pls help

2 comments

1

oof

1 answer

so can u like explain to me the script in the link?(credit the link)

--(Assuming the script is within the bullet)

local bullet = script.Parent

bullet.Touched:connect(function(hit)
if hit:IsA("Part") then

local sides = {}
local sizes = Vector3.new(hit.Size.X,hit.Size.Y,hit.Size.Z)
local pos = hit.Position
sides[1] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(0,0,-hit.Size.Z/2))--front
sides[2]= pos + hit.CFrame:vectorToWorldSpace(Vector3.new(0,0,hit.Size.Z/2))--back
sides[3] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(hit.Size.X/2,0,0))--right
sides[4] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(-hit.Size.X/2,0,0))--left
sides[5] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(0,hit.Size.Y/2,0))--top
sides[6] = pos + hit.CFrame:vectorToWorldSpace(Vector3.new(0,-hit.Size.Y/2,0))--bottom

local ClosestSide = 1
for i,v in ipairs(sides) do
if (bullet.Position - v).Magnitude < (bullet.Position - sides[ClosestSide]).Magnitude then
ClosestSide = i
end
end

if ClosestSide == 1 then print("front")
elseif ClosestSide == 2 then print("back")
elseif ClosestSide == 3 then print("right")
elseif ClosestSide == 4 then print("left")
elseif ClosestSide == 5 then print("top")
elseif ClosestSide == 6 then print("bottom")
end
end
end)

4 comments

0

you could have edited your question...

0

What you want is basically just everything after line 18, the script basically just determines the closest side and then determines what surface of the part is the closest

0

yeh i think ill do dat

0

and no that doesnt help

This discussion is preserved as it was. New answers, comments, and votes are closed.