CFrame

CFrame (Koordinatenrahmen) ist ein Datentyp in Roblox, der die Position und Orientierung von Objekten im 3D-Raum darstellt. Durch das Verständnis, wie man CFrames erstellt und manipuliert, können Sie eine präzise Kontrolle über die Platzierung und Drehung von Teilen und Modellen in Ihren Spielen erreichen.

PositionDer Standort des Objekts in der 3D-Welt.
AusrichtungDie Drehung des Objekts in der 3D-Welt.

CFrame-Beispiel

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 (Weltkoordinaten vs. Objektkoordinaten)

Weltkoordinaten

Weltkoordinaten beziehen sich auf das globale Koordinatensystem der Spielwelt.
  • Die Position eines Punktes wird relativ zu einem festen Ursprung der Welt definiert.
  • Die Position eines Punktes wird relativ zu einem festen Ursprung der Welt definiert.
  • Transformationen (wie Translationen, Drehungen und Skalierungen) werden relativ zum Ursprung der Welt angewendet.
  • Koordinaten im Weltkoordinatensystem sind absolut, das heißt, sie werden nicht von der Position oder Orientierung eines Elternteils oder anderer Objekte beeinflusst.

Objektkoordinaten

Objektkoordinaten, auch als lokaler Raum bekannt, beziehen sich auf das Koordinatensystem, das relativ zu einem Objekt ist.
  • Die Position eines Punktes wird relativ zum Ursprung des Objekts (nicht zum Ursprung der Welt) definiert.
  • Die Position eines Punktes wird relativ zum Ursprung des Objekts (nicht zum Ursprung der Welt) definiert.
  • Transformationen werden relativ zu den eigenen Achsen des Objekts angewendet, die im Vergleich zu den Achsen der Welt gedreht und skaliert sein können.
  • Dies ist besonders nützlich beim Umgang mit untergeordneten Objekten in einer Hierarchie, da ihre Transformationen auf der Position, Orientierung und Skalierung des übergeordneten Objekts basieren.
-- 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

Wenn Sie dieses Tutorial hilfreich fanden und meine Arbeit unterstützen möchten, können Sie mir gerne einen Kaffee spendieren.

Vielen Dank für Ihre Unterstützung!

Kaufen Sie mir einen Kaffee