Apprendre
Classe de moteur
Terrain
Création impossible

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.


Résumé
Méthodes
AutowedgeCell(x: number,y: number,z: number):boolean
Déprécié
AutowedgeCells(region: Region3int16):()
Déprécié
Clear():()
ConvertToSmooth():()
Déprécié
FillBall(center: Vector3,radius: number,material: Enum.Material):()
FillBlock(cframe: CFrame,size: Vector3,material: Enum.Material):()
FillCylinder(cframe: CFrame,height: number,radius: number,material: Enum.Material):()
FillRegion(region: Region3,resolution: number,material: Enum.Material):()
FillWedge(cframe: CFrame,size: Vector3,material: Enum.Material):()
GetCell(x: number,y: number,z: number):Tuple
Déprécié
GetWaterCell(x: number,y: number,z: number):Tuple
Déprécié
PasteRegion(region: TerrainRegion,corner: Vector3int16,pasteEmptyCells: boolean):()
ReadVoxelChannels(region: Region3,resolution: number,channelIds: {any}):Dictionary
ReadVoxels(region: Region3,resolution: number):Tuple
ReplaceMaterial(region: Region3,resolution: number,sourceMaterial: Enum.Material,targetMaterial: Enum.Material):()
SetCell(x: number,y: number,z: number,material: Enum.CellMaterial,block: Enum.CellBlock,orientation: Enum.CellOrientation):()
Déprécié
SetCells(region: Region3int16,material: Enum.CellMaterial,block: Enum.CellBlock,orientation: Enum.CellOrientation):()
Déprécié
SetWaterCell(x: number,y: number,z: number,force: Enum.WaterForce,direction: Enum.WaterDirection):()
Déprécié
WriteVoxelChannels(region: Region3,resolution: number,channels: Dictionary):()
WriteVoxels(region: Region3,resolution: number,materials: {any},occupancy: {any}):()
Membres hérités

Référence API
Propriétés
Decoration
Non scriptable
Lecture parallèle
Capacités : Environment
Terrain.Decoration:boolean

GrassLength
Non scriptable
Lecture parallèle
Capacités : Environment
Terrain.GrassLength:number

IsSmooth
Déprécié

MaterialColors
Non scriptable
Lecture parallèle
Capacités : Environment
Terrain.MaterialColors:BinaryString

MaxExtents
Lecture uniquement
Non répliqué
Lecture parallèle
Capacités : Environment
Terrain.MaxExtents:Region3int16

WaterColor
Lecture parallèle
Capacités : Environment
Terrain.WaterColor:Color3

WaterReflectance
Lecture parallèle
Capacités : Environment
Terrain.WaterReflectance:number

WaterTransparency
Lecture parallèle
Capacités : Environment
Terrain.WaterTransparency:number

WaterWaveSize
Lecture parallèle
Capacités : Environment
Terrain.WaterWaveSize:number

WaterWaveSpeed
Lecture parallèle
Capacités : Environment
Terrain.WaterWaveSpeed:number

Méthodes
AutowedgeCell
Déprécié

AutowedgeCells
Déprécié

CellCenterToWorld
Capacités : Environment
Terrain:CellCenterToWorld(
Paramètres
Retours

CellCornerToWorld
Capacités : Environment
Terrain:CellCornerToWorld(
Paramètres
Retours

Clear
Capacités : Environment
Terrain:Clear():()
Retours
()

ConvertToSmooth
Déprécié

CopyRegion
Capacités : Environment
Terrain:CopyRegion(region:Region3int16):TerrainRegion
Paramètres
Échantillons de code
Terrain:CopyRegion()
local terrainRegion = workspace.Terrain:CopyRegion(workspace.Terrain.MaxExtents)
workspace.Terrain:Clear()
task.wait(5)
workspace.Terrain:PasteRegion(terrainRegion, workspace.Terrain.MaxExtents.Min, true)

CountCells
Capacités : Environment
Terrain:CountCells():number
Retours

FillBall
Capacités : Environment
Terrain:FillBall(
center:Vector3, radius:number, material:Enum.Material
):()
Paramètres
center:Vector3
radius:number
material:Enum.Material
Retours
()

FillBlock
Capacités : Environment
Terrain:FillBlock(
cframe:CFrame, size:Vector3, material:Enum.Material
):()
Paramètres
cframe:CFrame
size:Vector3
material:Enum.Material
Retours
()

FillCylinder
Capacités : Environment
Terrain:FillCylinder(
cframe:CFrame, height:number, radius:number, material:Enum.Material
):()
Paramètres
cframe:CFrame
height:number
radius:number
material:Enum.Material
Retours
()

FillRegion
Capacités : Environment
Terrain:FillRegion(
region:Region3, resolution:number, material:Enum.Material
):()
Paramètres
region:Region3
resolution:number
material:Enum.Material
Retours
()

FillWedge
Capacités : Environment
Terrain:FillWedge(
cframe:CFrame, size:Vector3, material:Enum.Material
):()
Paramètres
cframe:CFrame
size:Vector3
material:Enum.Material
Retours
()

GetCell
Déprécié

GetMaterialColor
Écrire en parallèle
Capacités : Environment
Terrain:GetMaterialColor(material:Enum.Material):Color3
Paramètres
material:Enum.Material
Retours

GetWaterCell
Déprécié

PasteRegion
Capacités : Environment
Terrain:PasteRegion(
region:TerrainRegion, corner:Vector3int16, pasteEmptyCells:boolean
):()
Paramètres
pasteEmptyCells:boolean
Retours
()
Échantillons de code
Créer, Copier et Coller le Terrain
local Terrain = workspace.Terrain
-- Créer une simple région de terrain
local initialRegion = Region3.new(Vector3.zero, Vector3.one * 10)
Terrain:FillRegion(initialRegion, 4, Enum.Material.Grass)
-- Copier la région
local copyRegion = Region3int16.new(Vector3int16.new(0, 0, 0), Vector3int16.new(10, 10, 10))
local copiedRegion = Terrain:CopyRegion(copyRegion)
-- Définir où coller la région
local newRegionCorner = Vector3int16.new(5, 0, 0)
-- Coller la région
Terrain:PasteRegion(copiedRegion, newRegionCorner, true)

ReadVoxelChannels
Écrire en parallèle
Capacités : Environment
Terrain:ReadVoxelChannels(
region:Region3, resolution:number, channelIds:{any}
Paramètres
region:Region3
resolution:number
channelIds:{any}
Retours
Échantillons de code
Terrain:ReadVoxelChannels()
local REGION_START = Vector3.new(-20, -20, -20)
local REGION_END = Vector3.new(20, 20, 20)
local function printRegion(terrain, region)
local channelOutput = terrain:ReadVoxelChannels(region, 4, { "OccupationSolide", "MatérielSolide", "OccupationLiquide" })
local size = channelOutput.Size
for x = 1, size.X do
for y = 1, size.Y do
for z = 1, size.Z do
print(
("(%2i, %2i, %2i): %.2f %s %.2f"):format(
x,
y,
z,
channelOutput.SolidOccupancy[x][y][z],
channelOutput.SolidMaterial[x][y][z].Name,
channelOutput.LiquidOccupancy[x][y][z]
)
)
end
end
end
end
local region = Region3.new(REGION_START, REGION_END)
printRegion(workspace.Terrain, region)

ReadVoxels
Écrire en parallèle
Capacités : Environment
Terrain:ReadVoxels(
region:Region3, resolution:number
Paramètres
region:Region3
resolution:number
Retours
Échantillons de code
Terrain:LireVoxels()
local REGION_START = Vector3.new(-20, -20, -20)
local REGION_END = Vector3.new(20, 20, 20)
local function printRegion(terrain, region)
local materials, occupancies = terrain:ReadVoxels(region, 4)
local size = materials.Size -- Identique à occupancies.Size
for x = 1, size.X, 1 do
for y = 1, size.Y, 1 do
for z = 1, size.Z, 1 do
print(("(%2i, %2i, %2i): %.2f %s"):format(x, y, z, occupancies[x][y][z], materials[x][y][z].Name))
end
end
end
end
local region = Region3.new(REGION_START, REGION_END)
printRegion(workspace.Terrain, region)

ReplaceMaterial
Capacités : Environment
Terrain:ReplaceMaterial(
region:Region3, resolution:number, sourceMaterial:Enum.Material, targetMaterial:Enum.Material
):()
Paramètres
region:Region3
resolution:number
sourceMaterial:Enum.Material
targetMaterial:Enum.Material
Retours
()
Échantillons de code
Terrain:RemplacerMatériel
local terrain = workspace.Terrain
local region = Region3.new(Vector3.new(-20, -20, -20), Vector3.new(20, 20, 20))
local resolution = 4
local materialToReplace = Enum.Material.Grass
local replacementMaterial = Enum.Material.Asphalt
terrain:ReplaceMaterial(region, resolution, materialToReplace, replacementMaterial)

SetCell
Déprécié

SetCells
Déprécié

SetMaterialColor
Capacités : Environment
Terrain:SetMaterialColor(
material:Enum.Material, value:Color3
):()
Paramètres
material:Enum.Material
value:Color3
Retours
()

SetWaterCell
Déprécié

WorldToCell
Capacités : Environment
Terrain:WorldToCell(position:Vector3):Vector3
Paramètres
position:Vector3
Retours

WorldToCellPreferEmpty
Capacités : Environment
Terrain:WorldToCellPreferEmpty(position:Vector3):Vector3
Paramètres
position:Vector3
Retours

WorldToCellPreferSolid
Capacités : Environment
Terrain:WorldToCellPreferSolid(position:Vector3):Vector3
Paramètres
position:Vector3
Retours

WriteVoxelChannels
Capacités : Environment
Terrain:WriteVoxelChannels(
region:Region3, resolution:number, channels:Dictionary
):()
Paramètres
region:Region3
resolution:number
channels:Dictionary
Retours
()
Échantillons de code
Terrain:WriteVoxelChannels()
local region = Region3.new(Vector3.new(0, 0, 0), Vector3.new(64, 32, 64))
local RESOLUTION = 4
local OCC_EPSILON = 1 / 256
local function generateRandomTerrainInRegion(regionInput)
local region = regionInput:ExpandToGrid(4)
local size = region.Size / 4
local solidMaterials = {}
local solidOccupancies = {}
local waterOcc = {}
for x = 1, size.X do
table.insert(solidMaterials, {})
table.insert(solidOccupancies, {})
table.insert(waterOcc, {})
for y = 1, size.Y do
table.insert(solidMaterials[x], {})
table.insert(solidOccupancies[x], {})
table.insert(waterOcc[x], {})
for z = 1, size.Z do
local mat = if math.random() < 0.5 then Enum.Material.Air else Enum.Material.Sand
local occ = 0
local water = math.random()
if mat == Enum.Material.Sand then
occ = math.random() / 2 + 0.5
if occ > 1 - OCC_EPSILON then
water = 0 -- Les solides ne peuvent pas contenir d'eau
end
else
occ = 0
end
table.insert(solidMaterials[x][y], mat)
table.insert(solidOccupancies[x][y], occ)
table.insert(waterOcc[x][y], water)
end
end
end
return { SolidMaterial = solidMaterials, SolidOccupancy = solidOccupancies, LiquidOccupancy = waterOcc }
end
local regionContent = generateRandomTerrainInRegion(region)
workspace.Terrain:WriteVoxelChannels(region, 4, regionContent)

WriteVoxels
Capacités : Environment
Terrain:WriteVoxels(
region:Region3, resolution:number, materials:{any}, occupancy:{any}
):()
Paramètres
region:Region3
resolution:number
materials:{any}
occupancy:{any}
Retours
()
Échantillons de code
Terrain:WriteVoxels()
local terrain = workspace.Terrain
local resolution = 4
local region = Region3.new(Vector3.new(0, 0, 0), Vector3.new(16, 28, 20)):ExpandToGrid(resolution)
local materials = {
{
{
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
},
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud },
{ Enum.Material.Air, Enum.Material.Air, Enum.Material.Air, Enum.Material.Air, Enum.Material.Air },
},
{
{
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
},
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Mud, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Mud },
{ Enum.Material.Air, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Air },
},
{
{
Enum.Material.CrackedLava,
Enum.Material.Sand,
Enum.Material.Sand,
Enum.Material.Sand,
Enum.Material.CrackedLava,
},
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Mud, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Mud },
{ Enum.Material.Air, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Air },
},
{
{
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
},
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud },
{ Enum.Material.Air, Enum.Material.Air, Enum.Material.Air, Enum.Material.Air, Enum.Material.Air },
},
}
local occupancies = {
{
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0.5, 0.5, 0.5, 0.5, 0.5 },
{ 0, 0, 0, 0, 0 },
},
{
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0.5, 1, 1, 1, 0.5 },
{ 0, 1, 1, 1, 0 },
},
{
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0.5, 1, 1, 1, 0.5 },
{ 0, 1, 1, 1, 0 },
},
{
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0.5, 0.5, 0.5, 0.5, 0.5 },
{ 0, 0, 0, 0, 0 },
},
}
terrain:WriteVoxels(region, resolution, materials, occupancies)

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.