We use cookies on this site to enhance your user experience
Collapse Sidebar


Shifts a Model by the given Vector3 offset, preserving the Model's orientation. If another BasePart or 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.


Name Type Default Description

The DataType/Vector3 to translate the Model by,


Return Type Summary

Code Samples

Model TranslateBy

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

-- use TranslateBy to shift the model into the obstruction
model:TranslateBy(endPosition - startPosition)