Script working in Studio but not on ROBLOX

  1. What do you want to achieve? Make the script make the camera look like a sidescroller like how it is in Studio!

  2. What is the issue? look at the screenshots.

Studio

ROBLOX

  1. What solutions have you tried so far? Putting it inside StarterCharacterScripts.

local Player = game:GetService("Players").LocalPlayer
local Character
local Humanoid
local Camera = workspace.CurrentCamera

local RunService = game:GetService("RunService")

-- Configurable Settings
local Dampening = 1000 -- Higher number makes it take longer to reach its destination
local Power = 10000 -- Higher number means more power
local MaxForce = Vector3.new(4000, 4000, 4000) -- Max amount of power that can be applied on each axis
--------------------------------------------------------------------------------------------

function OnCharacterAdded(AddedCharacter)
	if AddedCharacter == nil then
		repeat wait() until AddedCharacter ~= nil
	end
	
	if AddedCharacter.Parent == nil then
		repeat wait() until AddedCharacter.Parent ~= nil
	end
	
	if AddedCharacter ~= nil and AddedCharacter.Parent ~= nil then
		Character = AddedCharacter
		Humanoid = Character:WaitForChild("Humanoid")
		
		Camera.CameraType = Enum.CameraType.Scriptable
		
		CreateCameraPositionPart()
		RunService:BindToRenderStep("Camera", Enum.RenderPriority.Camera.Value, UpdateCameraPosition)
	end
end

game.Workspace.CurrentCamera.FieldOfView = 50

function UpdateCameraPosition()
	Character.CameraPositionPart.BodyPosition.Position = Character.Head.Position + Vector3.new(-12, 0, 0)
	Camera.CFrame = CFrame.new(Character.CameraPositionPart.Position, Character.CameraPositionPart.Position - Vector3.new(-1,0,0))
end

function CreateCameraPositionPart()
	local CameraPositionPart = Instance.new("Part")
	CameraPositionPart.CanCollide = false
	CameraPositionPart.Transparency = 1
	CameraPositionPart.Name = "CameraPositionPart"
	CameraPositionPart.Parent = Character
	
	local CameraBodyPosition = Instance.new("BodyPosition")
	CameraBodyPosition.D = Dampening
	CameraBodyPosition.P = Power
	CameraBodyPosition.MaxForce = MaxForce
	CameraBodyPosition.Parent = CameraPositionPart
	
	return
end

Player.CharacterAdded:Connect(OnCharacterAdded)
1 Like

maybe u can try this script

local Player = game:GetService("Players").LocalPlayer
local Character
local Humanoid
local Camera = game.Workspace.CurrentCamera

local RunService = game:GetService("RunService")

-- Ayarlar
local Dampening = 10 -- Yavaşlatma miktarı (daha düşük bir sayı daha yavaşlatır)
local Power = 5000 -- Düğüm hızı (daha yüksek bir sayı daha hızlı olur)
local MaxForce = Vector3.new(4000, 4000, 4000) -- Her eksende uygulanabilecek maksimum güç
--------------------------------------------------------------------------------------------

function OnCharacterAdded(AddedCharacter)
    if not AddedCharacter then
        AddedCharacter = Player.Character or Player.CharacterAdded:Wait()
    end
    
    Character = AddedCharacter
    Humanoid = Character:WaitForChild("Humanoid")
    
    Camera.CameraType = Enum.CameraType.Scriptable
    
    CreateCameraPositionPart()
    RunService:BindToRenderStep("Camera", Enum.RenderPriority.Camera.Value, UpdateCameraPosition)
end

function UpdateCameraPosition()
    local targetPosition = Character.HumanoidRootPart.Position + Vector3.new(-12, 0, 0)
    Character.CameraPositionPart.BodyPosition.Position = targetPosition
    Camera.CFrame = CFrame.new(targetPosition, targetPosition - Vector3.new(-1, 0, 0))
end

function CreateCameraPositionPart()
    local CameraPositionPart = Instance.new("Part")
    CameraPositionPart.Size = Vector3.new(1, 1, 1)
    CameraPositionPart.Anchored = true
    CameraPositionPart.CanCollide = false
    CameraPositionPart.Transparency = 1
    CameraPositionPart.Name = "CameraPositionPart"
    CameraPositionPart.Position = Player.Character.HumanoidRootPart.Position
    
    local CameraBodyPosition = Instance.new("BodyPosition")
    CameraBodyPosition.D = Dampening
    CameraBodyPosition.P = Power
    CameraBodyPosition.MaxForce = MaxForce
    CameraBodyPosition.Parent = CameraPositionPart
    
    CameraPositionPart.Parent = Player.Character
    
    return CameraPositionPart
end

if Player.Character then
    OnCharacterAdded(Player.Character)
end

Player.CharacterAdded:Connect(OnCharacterAdded)

1 Like

Thank you!
I did slightly alter it to fit my liking.

local Player = game:GetService("Players").LocalPlayer
local Character
local Humanoid
local Camera = game.Workspace.CurrentCamera

local RunService = game:GetService("RunService")

-- Ayarlar
local Dampening = 1000
local Power = 10000
local MaxForce = Vector3.new(4000, 4000, 4000)
--------------------------------------------------------------------------------------------

function OnCharacterAdded(AddedCharacter)
	if not AddedCharacter then
		AddedCharacter = Player.Character or Player.CharacterAdded:Wait()
	end
	
	game.Workspace.CurrentCamera.FieldOfView = 50
	
	Character = AddedCharacter
	Humanoid = Character:WaitForChild("Humanoid")

	Camera.CameraType = Enum.CameraType.Scriptable

	CreateCameraPositionPart()
	RunService:BindToRenderStep("Camera", Enum.RenderPriority.Camera.Value, UpdateCameraPosition)
end

function UpdateCameraPosition()
	local targetPosition = Character.Head.Position + Vector3.new(-12, 0, 0)
	Character.CameraPositionPart.BodyPosition.Position = targetPosition
	Camera.CFrame = CFrame.new(targetPosition, targetPosition - Vector3.new(-1, 0, 0))
end

function CreateCameraPositionPart()
	local CameraPositionPart = Instance.new("Part")
	CameraPositionPart.Size = Vector3.new(1, 1, 1)
	CameraPositionPart.Anchored = true
	CameraPositionPart.CanCollide = false
	CameraPositionPart.Transparency = 1
	CameraPositionPart.Name = "CameraPositionPart"
	CameraPositionPart.Position = Player.Character.HumanoidRootPart.Position

	local CameraBodyPosition = Instance.new("BodyPosition")
	CameraBodyPosition.D = Dampening
	CameraBodyPosition.P = Power
	CameraBodyPosition.MaxForce = MaxForce
	CameraBodyPosition.Parent = CameraPositionPart

	CameraPositionPart.Parent = Player.Character

	return CameraPositionPart
end

if Player.Character then
	OnCharacterAdded(Player.Character)
end

Player.CharacterAdded:Connect(OnCharacterAdded)
1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.