How would creating a camera system like Animal Crossing be possible?

Hey! How is it going? I am currently wondering how it would be possible to create a camera system similar to Animal Crossing New Horizons / New Leaf. If you have some ideas, please let me know.

Thanks! WE

3 Likes

its really possible because i saw a person in the devforum did this kind of camera for his game

also edit: its called isometric camera system

2 Likes

This is a script I used for a 2D camera, maybe you could work off of this:

local player = game.Players.LocalPlayer

local camera = workspace.CurrentCamera

player.CharacterAdded:Wait()

player.Character:WaitForChild(“HumanoidRootPart”)

camera.CameraSubject = player.Character.HumanoidRootPart

camera.CameraType = Enum.CameraType.Attach

camera.FieldOfView = 60

game:GetService(‘RunService’).Stepped:Connect(function()

camera.CFrame = CFrame.new(player.Character.HumanoidRootPart.Position) * CFrame.new(0,15,30)

end)

(put in serverscriptservice btw)

1 Like

this doesnt help him at all the camera system hes making is soooo different from 2d game camera

also you are putting that script in server script service which is wrong you should put this in a local script inside starterplayer scripts

and no you cant just rotate the camera downwards to get the exact effect of isometric camera

1 Like

you can rotate the camera downwards and it’ll work pretty similarly to animal crossing

1 Like

yeah that would be better, i just used this for a singleplayer thing, its just something to start off of

1 Like

https://education.roblox.com/en-us/resources/arcade-game-top-down-camera

You could use this as a reference perhaps

This method is a good start, but this doesn’t lock the camera like I want it to.

This method is similar to what @Tychee101 did. The script I use for my top-down game is this

--This is located in StarterPlayerScripts
repeat wait()
until game:IsLoaded() == true
local offset = Vector3.new(0, 30, -15)  --EDIT: Change these numbers here to change the direction and orientation of the camera
local FOV = 70
local player = script.Parent.Parent
local camera = game.Workspace.CurrentCamera
local runService = game:GetService("RunService")
camera.FieldOfView = FOV
runService.RenderStepped:Connect(function(step)
local playerPosition = player.Character.HumanoidRootPart.Position
local cameraPosition = playerPosition + offset
camera.CoordinateFrame = CFrame.new(cameraPosition, playerPosition)
end)
runService:BindToRenderStep("Camera", Enum.RenderPriority.Camera.Value, runService.RenderStepped)

I just want to clarify that this script is from a tutorial in 2017 (found here), as I’m not super familiar with manupulating the camera and such.

Also, when you ask for an Animal Crossing style camera, besides it being top-down, do you also mean to replicate how the world is on a sort of cylinder? Because if so that would be great if you could clarify in your post.

EDIT: Sometimes this will throw an error. If so, just ignore it, as nothing actually happens.

1 Like

Yes. Kind of.

Remove the bottom line, and there should no longer be an error.

1 Like

Since you’re going for something like walking on a cylinder I would think that you’d need more than just a camera script, since AC:NH actually takes place on a cylinder that rotates.
One thing you could do is just not actually have the player move up or down, but have the island/map rotate instead; I have no idea what this would do for performance though.
You could also attempt to research and try and find out how the Animal Crossing devs did it as well.

Also thanks for fixing my script lol

1 Like