CFrame
CFrame
Overview
Description
CFrame
is a class frequently used to represent position and orientation in 3D space.
Properties
identity
CFrame
identity
returns the identity matrix, which represents a position at (0, 0, 0) with no rotation.
Code Samples
local CFZero = CFrame.identity
print(CFZero)
Position
Vector3
Position
returns the position of the CFrame
as a Vector3
.
Code Samples
local CF = CFrame.new(10, 50, 20)
print(CF.Position)
Orientation
Vector3
Orientation
returns the rotation of the CFrame
as a Vector3
in terms of yaw, pitch, and roll.
Code Samples
local CF = CFrame.fromOrientation(20, 90, 60)
print(CF.Orientation)
Rotation
Vector3
Represents the rotational matrix based on a 3x3 rotation.
Code Samples
local CF = CFrame.Angles(0, math.rad(45), 0)
print(CF.Rotation)
X
number
Returns the X coordinate of the CFrame.
Code Samples
local CF = CFrame.new(10, 50, 20)
print(CF.X)
Y
number
Returns the Y coordinate of the CFrame.
Code Samples
local CF = CFrame.new(10, 50, 20)
print(CF.Y)
Z
number
Returns the Z coordinate of the CFrame.
Code Samples
local CF = CFrame.new(10, 50, 20)
print(CF.Z)
XVector
Vector3
Returns the X axis vector of the CFrame.
Code Samples
local CF = CFrame.new(10, 50, 20)
print(CF.XVector)
YVector
Vector3
Returns the Y axis vector of the CFrame.
Code Samples
local CF = CFrame.new(10, 50, 20)
print(CF.YVector)
ZVector
Vector3
Returns the Z axis vector of the CFrame.
Code Samples
local CF = CFrame.new(10, 50, 20)
print(CF.ZVector)
LookVector
Vector3
Indicates the direction the camera is facing, based on the Z-axis.
Code Samples
local Part = script.Parent
local Workspace = game:GetService("Workspace")
local SpawnLocation = Workspace.SpawnLocation
local CF = CFrame.lookAt(Part.Position, SpawnLocation.Position)
print(CF.LookVector)
RightVector
Vector3
Indicates the camera's right-hand direction.
Code Samples
local Part = script.Parent
local CF = Part.CFrame
print(CF.RightVector)
UpVector
Vector3
Indicates the camera's upward direction.
Code Samples
local Part = script.Parent
local CF = Part.CFrame
print(CF.UpVector)
Constructors
new
Creates a basic CFrame object.
Parameters
None
Return
CFrame
A `CFrame` object
Code Samples
local CF = CFrame.new()
new
Creates a CFrame
object using a Vector3
position.
Parameters
Vector3
Position
Position for the CFrame object
Return
CFrame
A `CFrame` object
Code Samples
local Position = Vector3.new(10, 50, 20)
local CF = CFrame.new(Position)
new
Creates a CFrame
object using position and a look vector.
Parameters
Vector3
Position
The position of the CFrame.
Vector3
Look
The direction it is facing.
Return
CFrame
A `CFrame` object
Code Samples
local Position = Vector3.new(10, 50, 20)
local LookAt = Vector3.new(0, 30, 0)
local CF = CFrame.new(Position, LookAt)
new
Creates a CFrame
using X, Y, and Z coordinates.
Parameters
number
x
X coordinate
number
y
Y coordinate
number
z
Z coordinate
Return
CFrame
A `CFrame` object
Code Samples
local CF = CFrame.new(10, 50, 20)
lookAt
Generates a CFrame
that points towards a target from a given position.
Parameters
Vector3
at
The position where the CFrame is located.
Vector3
lookAt
The position the CFrame should face.
Vector3
up
The up direction from the position.
Return
CFrame
A new CFrame oriented towards the lookAt
point.
Code Samples
local Part = script.Parent
local Workspace = game:GetService("Workspace")
local SpawnLocation = Workspace.SpawnLocation
local CF = CFrame.lookAt(Part.Position, SpawnLocation.Position)
fromEulerAnglesXYZ
Creates a CFrame
from Euler angles (in radians) using the XYZ rotation order.
Parameters
number
rx
Rotation around the X-axis.
number
ry
Rotation around the Y-axis.
number
rz
Rotation around the Z-axis.
Return
CFrame
A new CFrame with the specified rotations.
Code Samples
local C = CFrame.fromEulerAnglesXYZ(1, 0.5, 0.25)
Angles
Creates a CFrame
from Euler angles (in radians).
Parameters
number
rx
Rotation around the X-axis.
number
ry
Rotation around the Y-axis.
number
rz
Rotation around the Z-axis.
Return
CFrame
A new CFrame with the specified rotations.
Code Samples
local CF = CFrame.Angles(0, math.rad(40), 0)
fromEulerAnglesYXZ
Creates a CFrame
from Euler angles (in radians) using the YXZ rotation order.
Parameters
number
rx
Rotation around the X-axis.
number
ry
Rotation around the Y-axis.
number
rz
Rotation around the Z-axis.
Return
CFrame
A new CFrame with the specified rotations.
Code Samples
local C = CFrame.fromEulerAnglesYXZ(1, 0.5, 0.25)
fromOrientation
Creates a CFrame
from Euler angles (in radians) using XYZ orientation.
Parameters
number
rx
Rotation around the X-axis.
number
ry
Rotation around the Y-axis.
number
rz
Rotation around the Z-axis.
Return
CFrame
A new CFrame with the specified rotations.
Code Samples
local C = CFrame.fromOrientation(1, 0.5, 0.25)
fromMatrix
Creates a CFrame
from a position and three directional vectors.
Parameters
Vector3
pos
The position of the CFrame.
Vector3
vx
The X direction vector.
Vector3
vy
The Y direction vector.
Vector3
vz
The Z direction vector.
Return
CFrame
A new CFrame defined by the given position and vectors.
Code Samples
local Position = Vector3.new(0, 50, 0)
local RightVector = Vector3.new(1, 0, 0)
local UpVector = Vector3.new(0, 1, 0)
local BackVector = Vector3.new(0, 0, 1)
local CF = CFrame.fromMatrix(Position, RightVector, UpVector, BackVector)
Methods
Inverse
Returns the inverse of the CFrame
.
Parameters
None
Return
CFrame
The inverse `CFrame`.
Code Samples
local CF = CFrame.new(0, 50, 0)
local InverseCF = CF:Inverse()
Lerp
Interpolates between the current CFrame
and the goal CFrame
by the percentage alpha
.
Parameters
CFrame
goal
The target `CFrame` to interpolate toward.
number
alpha
The weight for interpolation, ranging between 0 and 1.
Return
CFrame
The interpolated `CFrame`.
Code Samples
local CF1 = CFrame.new(0, 0, 0)
local CF2 = CFrame.new(10, 10, 10)
local Alpha = 0.5
local Result = CF1:Lerp(CF2, Alpha)
PointToWorldSpace
Converts a Vector3
point from object space to world space.
Parameters
Vector3
v3
The point in object space.
Return
Vector3
The point in world space.
Code Samples
local CF = CFrame.new(10, 0, 0)
local LocalPoint = Vector3.new(15, 0, 0)
local WorldPoint = CF:PointToWorldSpace(LocalPoint)
PointToObjectSpace
Converts a Vector3
point from world space to object space.
Parameters
Vector3
v3
The point in world space.
Return
Vector3
The point in object space.
Code Samples
local CF = CFrame.new(25, 0, 0)
local WorldPoint = Vector3.new(35, 0, 0)
local LocalPoint = CF:PointToObjectSpace(WorldPoint)
VectorToWorldSpace
Converts a Vector3
direction from object space to world space.
Parameters
Vector3
v3
The direction in object space.
Return
Vector3
The direction in world space.
Code Samples
local CF = CFrame.new()
local LocalDir = Vector3.new(1, 0, 0)
local WorldDir = CF:VectorToWorldSpace(LocalDir)
VectorToObjectSpace
Converts a Vector3
direction from world space to object space.
Parameters
Vector3
v3
The direction in world space.
Return
Vector3
The direction in object space.
Code Samples
local CF = CFrame.new()
local WorldDir = Vector3.new(1, 0, 0)
local LocalDir = CF:VectorToObjectSpace(WorldDir)
ToEulerAnglesXYZ
Returns the three Euler angles corresponding to the CFrame
in XYZ order.
Parameters
Return
Tuple
The three Euler angles: (rx, ry, rz).
Code Samples
local CF = CFrame.Angles(math.rad(30), math.rad(45), math.rad(60))
local X, Y, Z = CF:ToEulerAnglesXYZ()
ToEulerAnglesYXZ
Returns the three Euler angles corresponding to the CFrame
in YXZ order.
Parameters
Return
Tuple
The three Euler angles: (ry, rx, rz).
Code Samples
local CF = CFrame.Angles(math.rad(30), math.rad(45), math.rad(60))
local X, Y, Z = CF:ToEulerAnglesYXZ()
ToOrientation
Returns the orientation of the CFrame
as three angles.
Parameters
Return
Tuple
The tuple (rx, ry, rz) describing the orientation.
Code Samples
local CF = CFrame.Angles(math.rad(10), math.rad(20), math.rad(30))
local X, Y, Z = CF:ToOrientation()
Last updated