Proprietà della Telecamera
Proprietà | Dettagli |
---|---|
CameraType | Definisce il comportamento della telecamera (es. Fissa, Scriptabile). |
CFrame | Rappresenta la posizione e l'orientamento della telecamera. |
FieldOfView | Controlla il livello di zoom della telecamera. |
Focus | Il punto nello spazio su cui la telecamera è focalizzata. |
Tipi di Telecamera
Tipi di Telecamera | Dettagli |
---|---|
Enum.CameraType.Fixed | La telecamera rimane in una posizione e orientamento fissi. |
Enum.CameraType.Scriptable | La posizione e l'orientamento della telecamera possono essere controllati tramite script. |
Enum.CameraType.Attach | La telecamera è attaccata a un oggetto e segue i suoi movimenti. |
Enum.CameraType.Follow | La telecamera segue il personaggio del giocatore, ruotando per mantenerlo in vista. |
Enum.CameraType.Track | La telecamera segue il personaggio del giocatore da una posizione fissa. |
Enum.CameraType.Custom | Il comportamento predefinito della telecamera con opzioni personalizzabili. |
Impostazione di una Telecamera Fissa
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 della telecamera personalizzata che segue il giocatore.
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)
Cambia telecamera
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)
Cambia telecamera con TweenService
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)
Se hai trovato utile questo tutorial e desideri supportare il mio lavoro, considera di offrirmi un caffè.
Grazie mille per il tuo supporto!
Offrimi un caffè