Roblox Vector3
In Roblox, a Vector3 defines a Vector with three components. We use it for setting the position, rotation, and size of elements.
For example, a Part's Position
property is a Vector3 that sets its center position.
game.Workspace.Part.Position = Vector3.new(0, 0, 0)
The Rotation
property describes the amount of rotation along each axis in degrees.
game.Workspace.Part.Rotation = Vector3.new(0, 90, 0)
The Size
property describes the size of each side of a rectangular prism.
game.Workspace.Part.Size = Vector3.new(0)
We can perform Vector Addition by adding two Vector3 instances.
print(Vector3.new(1, 1, 1) + Vector3.new(2, 2, 2)) -- 3, 3 ,3
We can perform Vector Subtraction by subtracting two Vector3 instances.
print(Vector3.new(1, 1, 1) - Vector3.new(1, 1, 1)) -- 0, 0, 0
We can scale a vector by multiplying it by a scalar (Vector Scaling).
print(Vector3.new(1, 1, 1) * 2) -- 2, 2, 2
The Vector Magnitude is available via the Magnitude
property. It's equivalent to the function:
function vectorMagnitude(vector)
return math.sqrt(
vector.X * vector.X +
vector.Y * vector.Y +
vector.Z * vector.Z
)
end
print(vectorMagnitude(game.Workspace.Part.Position))
print(game.Workspace.Part.Position.Magnitude)
--- 3.4641016151378
--- 3.4641015529633
Note: there is a slight difference due to the imprecision of floating-point numbers.
A use case for this is to calculate the distance between 2 vectors by subtracting them and calculating the magnitude of the returned vector.
The Unit
property returns a Unit Vector, which is a new vector with a Magnitude of 1 in the direction of the original vector
Equivalent to:
function vectorUnit(vector)
return Vector3.new(
vector.X / vector.Magnitude,
vector.Y / vector.Magnitude,
vector.Z / vector.Magnitude
)
end
print(vectorUnit(game.Workspace.Part.Position))
print(game.Workspace.Part.Position.Unit)
--- 0.57735025882721, 0.57735025882721, 0.57735025882721
--- 0.57735025882721, 0.57735025882721, 0.57735025882721
We can perform a Linear Interpolation between 2 vectors using lerp
. Helpful in placing things in between 2 parts.
Lastly, Dot
performs the Dot Product between 2 vectors. Cross
returns the Cross Product between 2 vectors.
References
Roblox. Vector3. August 2021. URL: https://developer.roblox.com/en-us/api-reference/datatype/Vector3. ↩