CFrame

CFrame (Coordinate Frame) is een gegevenstype in Roblox dat de positie en oriëntatie van objecten in 3D-ruimte vertegenwoordigt. Door te leren hoe je CFrames kunt maken en manipuleren, kun je precieze controle krijgen over de plaatsing en rotatie van onderdelen en modellen in je games.

PositieDe locatie van het object in de 3D-wereld.
OriëntatieDe rotatie van het object in de 3D-wereld.

CFrame Voorbeeld

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 (Wereldruimte vs Objectruimte)

Wereldruimte

Wereldruimte verwijst naar het globale coördinatensysteem van de gamewereld.
  • De positie van een punt wordt gedefinieerd ten opzichte van een vast oorsprongspunt in de wereld.
  • De positie van een punt wordt gedefinieerd ten opzichte van een vast oorsprongspunt in de wereld.
  • Transformaties (zoals translatie, rotatie en schaalverandering) worden toegepast ten opzichte van de oorsprong van de wereld.
  • Coördinaten in Wereldruimte zijn absoluut, wat betekent dat ze niet worden beïnvloed door de positie of oriëntatie van een ouder of andere objecten.

Objectruimte

Objectruimte, ook bekend als lokale ruimte, verwijst naar het coördinatensysteem dat relatief is aan een object.
  • De positie van een punt wordt gedefinieerd ten opzichte van de oorsprong van het object (niet de wereld oorsprong).
  • De positie van een punt wordt gedefinieerd ten opzichte van de oorsprong van het object (niet de oorsprong van de wereld).
  • Transformaties worden toegepast ten opzichte van de assen van het object zelf, die kunnen zijn geroteerd en geschaald ten opzichte van de assen van de wereld.
  • Dit is vooral nuttig bij het werken met kindobjecten in een hiërarchie, omdat hun transformaties zijn gebaseerd op de positie, oriëntatie en schaal van hun ouderobject.
-- 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

Als u deze tutorial nuttig vond en mijn werk wilt ondersteunen, overweeg dan om mij een kop koffie te kopen.

Hartelijk dank voor uw steun!

Koop een kop koffie voor mij