CFrame

CFrame (Quadro de Coordenadas) é um tipo de dado no Roblox que representa a posição e orientação de objetos no espaço 3D. Ao entender como criar e manipular CFrames, você pode obter controle preciso sobre o posicionamento e rotação de partes e modelos nos seus jogos.

PosiçãoA localização do objeto no mundo 3D.
OrientaçãoA rotação do objeto no mundo 3D.

Exemplo de CFrame

local myCFrame = CFrame.new(10, 5, -3)
local part = script.Parent 
part.Position = Vector3.new(0, 5, 0)

-- Move the part to a new position using CFrame
part.CFrame = CFrame.new(10, 5, -10)
Image 1
Roblox Studio
local part = script.Parent 
part.Position = Vector3.new(0, 0.5, 0)

-- Rotate the part 45 degrees around the Y-axis
part.CFrame = CFrame.new(0, 0.5, 0) * CFrame.Angles(0, math.rad(45), 0)
Image 1
Roblox Studio
local part = script.Parent 
part.Position = Vector3.new(0, 0.5, 0)

-- Move the part to (10, 5, -3) and rotate it 45 degrees around the Y-axis
part.CFrame = CFrame.new(10, 5, -3) * CFrame.Angles(0, math.rad(45), 0)
Image 1
Roblox Studio
local part = script.Parent 
part.Position = Vector3.new(0, 2.5, 0)

-- Make the part look at the point (10, 2.5, -3)
local targetPosition = Vector3.new(10, 2.5, -3)
part.CFrame = CFrame.new(part.Position, targetPosition)
Image 1
Roblox Studio

CFrame (Espaço Mundial vs Espaço de Objeto)

Espaço Mundial

Espaço Mundial refere-se ao sistema de coordenadas global do mundo do jogo.
  • A posição de um ponto é definida em relação a uma origem fixa do mundo.
  • A posição de um ponto é definida em relação a uma origem fixa do mundo.
  • As transformações (como translações, rotações e escalas) são aplicadas em relação à origem do mundo.
  • As coordenadas no Espaço Mundial são absolutas, o que significa que não são afetadas pela posição ou orientação de qualquer objeto pai ou outro.

Espaço de Objeto

Espaço de Objeto, também conhecido como espaço local, refere-se ao sistema de coordenadas relativo a um objeto.
  • A posição de um ponto é definida em relação à origem do objeto (não à origem do mundo).
  • A posição de um ponto é definida em relação à origem do objeto (não à origem do mundo).
  • As transformações são aplicadas em relação aos eixos do próprio objeto, que podem estar girados e escalados em comparação com os eixos do mundo.
  • Isso é particularmente útil ao lidar com objetos filhos em uma hierarquia, pois suas transformações são baseadas na posição, orientação e escala do objeto pai.
-- Get a reference to the parent part
local parentPart = script.Parent

-- Function to create a child part and set its position using local CFrame
local function createChildPart()
    -- Create the child part
    local childPart = Instance.new("Part")
    childPart.Size = Vector3.new(2, 2, 2)
    childPart.Anchored = true
    childPart.Parent = parentPart
    childPart.Name = "Child"

    -- Position the child part relative to the parent part using Local CFrame
    local partCFrameLocal = CFrame.new(2, 2, 0) -- Local space offset
    childPart.CFrame = parentPart.CFrame * partCFrameLocal -- Set the child part's CFrame
    print("Child part created with Local Position:", partCFrameLocal.Position)

    -- Print parent's world space position
    print("Parent Part's World Position:", parentPart.CFrame.Position)

    -- Demonstrating ToWorldSpace and ToObjectSpace
    local modelCFrameWorld = parentPart.CFrame -- Parent's world CFrame
    local partCFrameWorld = modelCFrameWorld:ToWorldSpace(partCFrameLocal)
    print("World Position:", partCFrameWorld.Position) -- Prints the position of the part in world space

    local recalculatedPartCFrameLocal = modelCFrameWorld:ToObjectSpace(partCFrameWorld)
    print("Recalculated Local Position:", recalculatedPartCFrameLocal.Position) -- Should match partCFrameLocal.Position
end

-- Call the function to create the child part
createChildPart()
Image 1
Roblox Studio

Se você achou este tutorial útil e gostaria de apoiar meu trabalho, por favor, considere me comprar um café.

Muito obrigado pelo seu apoio!

Me compre um café