Cámara

Propiedades de la Cámara

PropiedadesDetalles
CameraTypeDefine el comportamiento de la cámara (por ejemplo, Fija, Scriptable).
CFrameRepresenta la posición y orientación de la cámara.
FieldOfViewControla el nivel de zoom de la cámara.
EnfoqueEl punto en el espacio en el que la cámara está enfocada.

Tipos de Cámara

Tipos de CámaraDetalles
Enum.CameraType.FixedLa cámara permanece en una posición y orientación fija.
Enum.CameraType.ScriptableLa posición y orientación de la cámara se pueden controlar mediante scripts.
Enum.CameraType.AttachLa cámara está adjunta a un objeto y sigue sus movimientos.
Enum.CameraType.FollowLa cámara sigue al personaje del jugador, rotando para mantenerlo en vista.
Enum.CameraType.TrackLa cámara sigue al personaje del jugador desde una posición fija.
Enum.CameraType.CustomEl comportamiento de la cámara predeterminado con opciones personalizables.

Configuración de una Cámara Fija

Image 1
Roblox Studio
wait(2)
print("Camera position updating")
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Fixed
--Positioned 50 studs above the origin, looking at the origin
camera.CFrame = CFrame.new(Vector3.new(0, 50, 0), Vector3.new(0, 0, 0))
print("Camera position updated")

Script de cámara personalizado que sigue al jugador.

Image 1
Roblox Studio
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()

local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable

game:GetService("RunService").RenderStepped:Connect(function()
	local targetPart = character:WaitForChild("HumanoidRootPart")
	local targetPosition = targetPart.Position + Vector3.new(0, 10, 10)  -- Offset above and behind the player
	camera.CFrame = CFrame.new(targetPosition, targetPart.Position) -- Camera looks at the player
end)

Cambiar cámara

Image 1
Roblox Studio
local function switchToCamera(cameraName)
	local camera = workspace:FindFirstChild(cameraName)
	if camera then
		workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
		workspace.CurrentCamera.CFrame = camera.CFrame
		print("Switched to camera: " .. cameraName)
	else
		warn("Camera not found: " .. cameraName)
	end
end

local topDownCamera = Instance.new("Camera")
topDownCamera.Name = "TopDownCamera"
topDownCamera.CFrame = CFrame.new(Vector3.new(0, 50, 0), Vector3.new(0, 0, 0))
topDownCamera.Parent = workspace
switchToCamera("Camera")

local UserInputService = game:GetService("UserInputService")

UserInputService.InputBegan:Connect(function(input)
	if input.KeyCode == Enum.KeyCode.L then
		switchToCamera("TopDownCamera")
	elseif input.KeyCode == Enum.KeyCode.P then
		workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
		workspace.CurrentCamera.CFrame = workspace.Camera.CFrame
		print("Switched back to default Camera")
	end
end)

Cambiar cámara con TweenService

Image 1
Roblox Studio
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")

-- Function to switch to a specific camera by name with tweening
local function switchToCamera(cameraName)
    local camera = workspace:FindFirstChild(cameraName)
    if camera then
        workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
        
        -- Create the tween for camera transition
        local tweenInfo = TweenInfo.new(
            2, -- Time (seconds)
            Enum.EasingStyle.Quad,
            Enum.EasingDirection.Out
        )

        local goal = {}
        goal.CFrame = camera.CFrame

        local tween = TweenService:Create(workspace.CurrentCamera, tweenInfo, goal)
        tween:Play()

        print("Switched to camera: " .. cameraName)
    else
        warn("Camera not found: " .. cameraName)
    end
end

-- Create a new camera at start that looks at the origin from above (y=50)
local topDownCamera = Instance.new("Camera")
topDownCamera.Name = "TopDownCamera"
topDownCamera.CFrame = CFrame.new(Vector3.new(0, 50, 0), Vector3.new(0, 0, 0))
topDownCamera.Parent = workspace

-- Set "Camera" as the default camera
workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
workspace.CurrentCamera.CFrame = workspace.Camera.CFrame

-- Key press detection
UserInputService.InputBegan:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.L then
        switchToCamera("TopDownCamera")
    elseif input.KeyCode == Enum.KeyCode.P then
        -- Revert to the default camera instantly
        local defaultCamera = workspace:FindFirstChild("Camera")
        if defaultCamera then
            workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
            workspace.CurrentCamera.CFrame = defaultCamera.CFrame
            print("Switched back to default Camera")
        end
    end
end)

Si encuentras útil este tutorial y deseas apoyar mi trabajo, considera invitarme a un café.

¡Muchas gracias por tu apoyo!

Invítame a un café