Model by the given
Vector3 offset, preserving the
Model's orientation. If another
Terrain already exists at the new position then the
Model will overlap said object.
The translation is applied in world space rather than object space, meaning even if the model’s parts are orientated differently it will still move along the standard axis.
This sample demonstrates how Model:TranslateBy ignores collisions and respects the orientation of the model.
A simple two part Model is created, rotated 45 degrees on the Y axis, and its PrimaryPart is set. An large obstruction part is placed next to it.
After 5 seconds Model:TranslateBy is used to direct the model to move inside the obstruction part. The model will move inside of the obstruction and maintain it’s current orientation.
-- define two Positions local startPosition = Vector3.new(-20, 10, 0) local endPosition = Vector3.new(0, 10, 0) -- create a simple rotated model at the startPosition local model = Instance.new("Model", game.Workspace) local part1 = Instance.new("Part") part1.Size = Vector3.new(4, 4, 4) part1.CFrame = CFrame.new(startPosition) * CFrame.Angles(0, math.rad(45), 0) part1.Anchored = true part1.BrickColor = BrickColor.new("Bright yellow") part1.Parent = model local part2 = Instance.new("Part") part2.Size = Vector3.new(2, 2, 2) part2.CFrame = part1.CFrame * CFrame.new(0, 3, 0) part2.Anchored = true part2.BrickColor = BrickColor.new("Bright blue") part2.Parent = model -- set the primary part model.PrimaryPart = part1 model.Parent = game.Workspace -- create an obstruction at the endPosition local obstruction = Instance.new("Part") obstruction.Name = "Obstruction" obstruction.Size = Vector3.new(10, 10, 10) obstruction.Position = Vector3.new(0, 10, 0) obstruction.Transparency = 0.5 obstruction.Anchored = true obstruction.BrickColor = BrickColor.new("Bright green") obstruction.Parent = game.Workspace wait(3) -- use TranslateBy to shift the model into the obstruction model:TranslateBy(endPosition - startPosition)