I’m making a module that I can use so that I can move parts and get them to the same position.
I’m firing the Module’s function, but the part never changes position, even though all of the print events are firing.
03:03:01.320 Server Script Ready! - Server - Move:6
03:03:01.320 MoveTo() - Server - MoveModule:12
--\\ Module Made by Star \\--
--[[ --
MoveX:(
Part2 References The Second Part that Part1 is supposed to go to.
)
]] --
local module = {}
function module:MoveTo(Part, Part2)
print("MoveTo()")
local currentPosition = Part.Position
local designatedPosition = Part2.Position
local cPositionX = Part.Position.X
local cPositionZ = Part.Position.Z
local dPositionX = designatedPosition.X
local dPositionZ = designatedPosition.Z
while currentPosition ~= designatedPosition do
task.wait(.5)
if cPositionX < dPositionX then
currentPosition += Vector3.new(.5, 0, 0)
else if cPositionX > dPositionX then
currentPosition -= Vector3.new(.5, 0, 0)
end
end
if cPositionZ < dPositionZ then
currentPosition += Vector3.new(.5, 0, 0)
else if cPositionZ > dPositionZ then
currentPosition -= Vector3.new(.5, 0, 0)
end
end
currentPosition = Part.Position
designatedPosition = Part2.Position
cPositionX = Part.Position.X
cPositionZ = Part.Position.Z
dPositionX = designatedPosition.X
dPositionZ = designatedPosition.Z
end
end
return module
The part never moves because your code doesn’t change the part’s position, all it does is change the copy of the part’s position that you stored in the variables.
What I meant is that you just have to do Part.Position = currentPosition after your calculations. Your function is fine, I’m not sure what the screenshot is supposed to show
Now the script looks like this, but the part isn’t moving still.
function module:MoveTo(Part, Part2)
local currentPosition = Part.Position
local designatedPosition = Part2.Position
local cPositionX = Part.Position.X
local cPositionZ = Part.Position.Z
local dPositionX = designatedPosition.X
local dPositionZ = designatedPosition.Z
local times = 0
while currentPosition ~= designatedPosition do
times += 1
task.wait(.5)
print(times)
if cPositionX < dPositionX then
Part.Position += Vector3.new(.5, 0, 0)
elseif cPositionX > dPositionX then
Part.Position -= Vector3.new(.5, 0, 0)
end
if cPositionZ < dPositionZ then
Part.Position += Vector3.new(.5, 0, 0)
elseif cPositionZ > dPositionZ then
Part.Position -= Vector3.new(.5, 0, 0)
end
currentPosition = Part.Position
designatedPosition = Part2.Position
cPositionX = currentPosition.X
cPositionZ = currentPosition.Z
dPositionX = designatedPosition.X
dPositionZ = designatedPosition.Z
end
end