Coordonate 3D și Orientare Spațială: Vector3 și CFrame în Roblox în Luau (Roblox Studio)

Ghid complet pentru Vector3 și CFrame în Roblox Studio: poziționare carteziană, rotații unghiulare în radiani, matrice de transformare 3D și poziționare relativă.

Sintaxă
local poz = Vector3.new(x, y, z); local orientare = CFrame.Angles(rx, ry, rz)

În Roblox Studio, orice element din lumea 3D își definește starea fizică prin două structuri matematice fundamentale: Vector3 (care stochează poziția carteziană X, Y, Z și dimensiunile) și CFrame (Coordinate Frame), o matrice de transformare 4×4 care combină atât poziția în spațiu, cât și orientarea (rotația pe cele 3 axe).

Manipularea poziției și orientării cu CFrame
-- 1. Poziție simplă prin Vector3:
local parte = workspace.PiesaPrincipala :: BasePart
parte.Position = Vector3.new(0, 10, -50)

-- 2. CFrame combină poziția cu rotația (folosind CFrame.Angles în radiani):
local pozitieTinta = Vector3.new(20, 5, 10)
local rotatieYGrade = math.rad(45) -- convertim 45 de grade în radiani

-- Fixăm poziția și orientăm piesa la 45° pe axa verticală Y:
parte.CFrame = CFrame.new(pozitieTinta) * CFrame.Angles(0, rotatieYGrade, 0)

-- 3. CFrame.lookAt: orientează o piesă direct către fața altei ținte:
local inamic = workspace.Inamic :: BasePart
parte.CFrame = CFrame.lookAt(parte.Position, inamic.Position)

-- 4. Deplasare relativă (înainte pe direcția proprie a obiectului):
-- LookVector este vectorul unitate care indică exact unde privește fața piesei:
parte.Position += parte.CFrame.LookVector * 10 -- avansează 10 unități înainte!