Could Someone Help Me How To Make A Isometric Camera That Can Move With Control Keys And The Character Wont Move ( Also How Can I Make It Zoom In And Move )
You can’t perfectly achieve this effect. But, you should try decreasing the field of view as much as possible, as well as moving the camera back very far. I don’t know how this will look, but it should look different than normal. It may also mess up some raycasting but I’m not sure. Give it a try!
As @bluebxrrybot said, you’ll want to mess with the FOV.
Here’s an example of something I threw together:
HQ Version
LocalScript inside of StarterCharacterScripts:
local fov = 5
local width = 1
local maxParts = 100
local transparency = 0.75
local height = 300
local distance = (10/math.clamp(fov,1,1000)) * height
local runService = game:GetService('RunService')
local character = script.Parent
local root = character:WaitForChild('HumanoidRootPart')
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
camera.CameraSubject = nil
camera.FieldOfView = fov
local alive = true
local died
died = character:WaitForChild('Humanoid').Died:Connect(function()
alive = nil
died:Disconnect()
died = nil
camera = nil
character = nil
root = nil
end)
local transparentList = {}
function CameraRaycast()
local params = OverlapParams.new()
params.FilterType = Enum.RaycastFilterType.Blacklist
params.FilterDescendantsInstances = {character}
params.MaxParts = maxParts
local cameraPos,rootPos = camera.CFrame.Position,root.Position
local diff = (cameraPos-rootPos).Magnitude
local cframe = CFrame.new(camera.CFrame.Position,root.Position) * CFrame.new(0,0,-diff/2)
cameraPos,rootPos=nil,nil
return workspace:GetPartBoundsInBox(cframe,Vector3.new(width,width,diff),params)
end
function UpdateList()
local newList = CameraRaycast()
for _,obj in transparentList do
obj[1].Transparency = obj[2]
end
table.clear(transparentList)
transparentList = {}
for _,part in newList do
local n = part.Transparency
table.insert(transparentList,{part,n})
if n < 1 then
part.Transparency = transparency
end
n=nil
end
newList = nil
end
while alive do
camera.CFrame = CFrame.new(root.Position) * CFrame.new(0,distance,0) * CFrame.Angles(0,math.rad(45),0) * CFrame.Angles(math.rad(-67.5),0,0) * CFrame.new(0,-(37.5/100)*distance,0)
UpdateList()
runService.RenderStepped:Wait()
end
This was just something I quickly threw together, but you could probably make it nicer if you wanted to. The only issue is that the smaller the FOV, the more zoomed in it will be. The more zoomed in, the farther you have to move the camera away. The farther you move the camera away, the less likely things are to render properly, especially the lighting as you see there.
thats kind of it but i dont want the player to move but the CAMERA to move (also zoom in and zoom out)
You can edit my script to do that or write your own.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.