You probably know that we can’t paint terrain colors with same materials, so most the of the developers make a different place for different terrain biomes.
But you can make biomes within the same place using Region3 and Terrain:SetMaterialColor()
Heres a video demonstrating it.
External MediaI’ve used ZonePlus for zones
First, create zones for your biomes by making two parts named Grass and Snow. Disable their collisions and set them to be transparent.
Now create a local script in StarterPlayerScripts and type the following.
local zonemodule = require(game.ReplicatedStorage.Zone)
local grass_zone = zonemodule.new(workspace.Zones.Grass)
local snow_zone = zonemodule.new(workspace.Zones.Snow)
local properties = {
Grass = {
{Enum.Material.Grass, Color3.fromRGB(111, 126, 62)},
{Enum.Material.LeafyGrass, Color3.fromRGB(106, 134, 64)}
},
Snow = {
{Enum.Material.Grass, Color3.fromRGB(235, 253, 255)},
{Enum.Material.LeafyGrass, Color3.fromRGB(235, 253, 255)}
}
}
local terrain = workspace.Terrain
grass_zone.playerEntered:Connect(function(player)
if player == game.Players.LocalPlayer then
for i,v in pairs(properties.Grass) do
terrain:SetMaterialColor(v[1],v[2])
end
end
end)
snow_zone.playerEntered:Connect(function(player)
if player == game.Players.LocalPlayer then
for i,v in pairs(properties.Snow) do
terrain:SetMaterialColor(v[1],v[2])
end
end
end)
and thats it!
I cannot guarantee the performance, but it is functioning well for me personally.
Test it out here: