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

How do you script a model that moves to the side once touched?

How do you make a script that makes a Model move to the side once you touch it, I have been messing up on this.

1 answer

for loops are the deity of searching world!

local Model = nil -- replace nil with the destination of Model

function Move()
	for i, v in pairs(Model:GetChildren()) do
		if v:IsA"BasePart" then
			v.CFrame = v.CFrame + Vector3.new(0,0,0) -- simply change the direction
		end
	end
end

-- this 'for loop' makes sure that function works on all parts of Model
for x, y in pairs(Model:GetChildren()) do
	if y:IsA"BasePart" then
		y.Touched:connect(Move)
	end
end

This simple code works like this:

  • it goes through all children of Model

  • if the child is BasePart, then it will move it

:GetChildren() method gets all the children of the Model and puts them into a table, meanwhile pairs function sorts those children by Key and Value and finally for loop is used to search through all of the table's content!

Note: this is a simple script and is made with hypothesis that contents of Model are only Parts and not other Models (or other children carriers).

Final Note: this script does not have debounce, meaning that once the part is touched and moved, it can be touched and moved again instantly - which can lead to some shameful situations if you keep touching the parts.

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