Terrain

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง

สภาพแวดล้อมช่วยให้คุณสามารถสร้างสภาพแวดล้อมที่สามารถเปลี่ยนแปลงได้อย่างไดนามิกด้วยความล่าช้าเล็กน้อยหรือไม่มีเลยขณะนี้อิงจากกริด 4×4×4 ของเซลล์ซึ่งแต่ละเซลล์มีหมายเลขระหว่าง 0 และ 1 ที่แทนที่จำนวนเซลล์ที่เซลล์ควรใช้และวัสดุของเซลล์การเปลี่ยนแปลงการใช้งานกำหนดวิธีที่เซลล์จะแปลงร่วมกับเซลล์รอบๆ และผลลัพธ์คือภาพลวงตาว่าไม่มีข้อจำกัดในกริด

สำหรับข้อมูลเพิ่มเติม ดู พื้นที่

สรุป

คุณสมบัติ

  • ไม่สามารถเขียนสคริปต์
    อ่านพร้อมๆ กัน

    เปิดใช้งานหรือปิดการตกแต่งพื้นที่

  • ไม่สามารถเขียนสคริปต์
    อ่านพร้อมๆ กัน

    ระบุความยาวของหญ้าเคลื่อนไหว

  • MaterialColors:BinaryString
    ไม่สามารถเขียนสคริปต์
    อ่านพร้อมๆ กัน

    MaterialColors เป็นตัวแทนของเอดิเตอร์สำหรับคุณลักษณะสีวัสดุและ ไม่สามารถแก้ไขโดยสคริปต์ได้ เพื่อรับสีของวัสดุใช้: Terrain:GetMaterialColor() เพื่อตั้งสีของวัสดุใช้: Terrain:SetMaterialColor()

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    แสดงขอบเขตของภูมิภาคที่แก้ไขได้ใหญ่ที่สุดที่เป็นไปได้

  • อ่านพร้อมๆ กัน

    สีย้อมของน้ําพื้นที่

  • อ่านพร้อมๆ กัน

    ควบคุมว่าการสะท้อนน้ําของพื้นที่มืดมนเพียงใด

  • อ่านพร้อมๆ กัน

    ความโปร่งใสของน้ําพื้นที่

  • อ่านพร้อมๆ กัน

    ตั้งค่าความสูงสูงสุดของคลื่นน้ําในพื้นที่ในสตัด

  • อ่านพร้อมๆ กัน

    ตั้งจำนวนครั้งที่คลื่นน้ําในพื้นที่จะย้ายขึ้นและลงต่อนาที

คุณสมบัติรับทอดมาจากBasePart
  • อ่านพร้อมๆ กัน

    กำหนดว่าชิ้นส่วนเป็นอนันต์ตามฟิสิกส์หรือไม่

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    ความเร็วในแนวมุมของการประกอบชิ้นส่วน

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    ศูนย์กลางของมวลของการประกอบชิ้นส่วนในพื้นที่โลก

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    ความเร็วเชิงเส้นของการประกอบชิ้นส่วน

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    มวลรวมของการประกอบชิ้นส่วน

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    การอ้างอิงถึงส่วนรากของการประกอบ

  • อ่านพร้อมๆ กัน

    กำหนดว่าชิ้นจะโต้ตอบกับการจำลองเสียงทางกายภาพหรือไม่ คล้ายกับ CastShadow สำหรับแสง

  • อ่านพร้อมๆ กัน

    กำหนดประเภทพื้นผิวสำหรับด้านหลังของชิ้นส่วน

  • อ่านพร้อมๆ กัน

    กำหนดประเภทพื้นผิวสำหรับด้านล่างของชิ้นส่วน

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    กำหนดสีของชิ้นส่วน

  • อ่านพร้อมๆ กัน

    กำหนดตำแหน่งและทิศทางของ BasePart ในโลก

  • อ่านพร้อมๆ กัน

    กำหนดว่าชิ้นส่วนจะชนกับชิ้นส่วนอื่นหรือไม่

  • อ่านพร้อมๆ กัน

    กำหนดว่าชิ้นส่วนจะถูกพิจารณาในระหว่างการดำเนินการค้นหาในพื้นที่หรือไม่

  • อ่านพร้อมๆ กัน

    กำหนดว่าจะมีการเรียกไฟ Touched และ TouchEnded กิจกรรมบนส่วนหรือไม่

  • อ่านพร้อมๆ กัน

    กำหนดว่าส่วนใดมีเงาหรือไม่

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายตำแหน่งของโลกที่ศูนย์กลางของมวลของชิ้นส่วนอยู่

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายชื่อกลุ่มการชนกันของชิ้นส่วน

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    กำหนดสีของชิ้นส่วน

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    บ่งชี้คุณสมบัติทางกายภาพปัจจุบันของชิ้นส่วน

  • อ่านพร้อมๆ กัน

    กำหนดคุณสมบัติทางกายภาพหลายอย่างของชิ้นส่วน

  • อ่านพร้อมๆ กัน

    ใช้เพื่อเปิดใช้งานหรือปิดใช้งานแรงอากาศในชิ้นส่วนและชิ้นส่วนประกอบ

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    The CFrame ของระยะทางทางกายภาพของ BasePart .

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    ขนาดทางกายภาพที่แท้จริงของ BasePart ตามที่เครื่องกลศาสตร์กำหนด

  • อ่านพร้อมๆ กัน

    กำหนดประเภทพื้นผิวสำหรับด้านหน้าของชิ้นส่วน

  • อ่านพร้อมๆ กัน

    กำหนดประเภทพื้นผิวสำหรับด้านซ้ายของชิ้นส่วน

  • ซ่อนอยู่
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    กำหนดตัวคูณสำหรับ BasePart.Transparency ที่มองเห็นได้เฉพาะกับไคลเอนต์ท้องถิ่นเท่านั้น

  • อ่านพร้อมๆ กัน

    กำหนดว่าส่วนใดสามารถเลือกได้ใน Studio

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายมวลของชิ้นส่วน ผลิตภัณฑ์ของความหนาแน่นและปริมาณ

  • อ่านพร้อมๆ กัน

    กำหนดว่าชิ้นส่วนมีส่วนร่วมในมวลหรือแรงเฉื่อยของร่างกายแข็งหรือไม่

  • อ่านพร้อมๆ กัน

    กำหนดเทกเจอร์และคุณสมบัติทางกายภาพเริ่มต้นของชิ้นส่วน

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    ชื่อของ MaterialVariant .

  • ซ่อนอยู่
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายการหมุนของชิ้นส่วนในโลก

  • อ่านพร้อมๆ กัน

    ระบุออฟเซ็ตของจุดศูนย์กลางของชิ้นส่วนจาก CFrame ของมัน

  • ซ่อนอยู่
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายตำแหน่งของชิ้นส่วนในโลก

  • ซ่อนอยู่
    อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    เวลาตั้งแต่อัปเดตฟิสิกส์ครั้งล่าสุด

  • อ่านพร้อมๆ กัน

    กำหนดจํานวนส่วนที่สะท้อนกล่องท้องฟ้าได้

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายการเปลี่ยนแปลงขนาดเล็กที่สุดที่อนุญาตโดยวิธี Resize()

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายใบหน้าที่ส่วนสามารถปรับขนาดได้

  • อ่านพร้อมๆ กัน

    กำหนดประเภทพื้นผิวสำหรับด้านขวาของชิ้นส่วน

  • อ่านพร้อมๆ กัน

    กฎหลักในการกำหนดส่วนรากของการประกอบ

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    การหมุนของชิ้นส่วนในองศาสำหรับสามแกน

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    กำหนดขนาดของชิ้นส่วน (ความยาว ความกว้าง ความสูง)

  • อ่านพร้อมๆ กัน

    กำหนดประเภทพื้นผิวสำหรับด้านบนของชิ้นส่วน

  • อ่านพร้อมๆ กัน

    กำหนดจำนวนส่วนที่สามารถมองเห็นได้ผ่าน (ตรงกันข้ามของความทึบของส่วน)

คุณสมบัติรับทอดมาจากPVInstance
  • ไม่ซ้ำ
    ไม่สามารถเขียนสคริปต์
    อ่านพร้อมๆ กัน
  • ไม่ซ้ำ
    ไม่สามารถเขียนสคริปต์
    อ่านพร้อมๆ กัน

วิธีการ

  • ส่งคืนตำแหน่งโลกของศูนย์กลางของเซลล์พื้นที่ (x, y, z)

  • คืนตำแหน่งของมุมด้านล่างซ้ายไปข้างหน้าของเซลล์กริด (x, y, z)

  • Clear():()

    ล้างพื้นที่

  • ClearVoxelsAsync_beta(region : Region3,channelIds : Array):()
  • บันทึกชิ้นส่วนของพื้นที่เป็นวัตถุ TerrainRegion เพื่อให้สามารถโหลดกลับได้ในภายหลังหมายเหตุ: TerrainRegion ข้อมูลไม่ซ้ำกันระหว่างเซิร์ฟเวอร์และไคลเอนต์

  • คืนจํานวนเซลล์ที่ไม่ว่างเปล่าในพื้นที่

  • 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):()

    เติมพื้นที่ Region3 ด้วยพื้นที่ลาดเรียบ

  • FillWedge(cframe : CFrame,size : Vector3,material : Enum.Material):()

    เติมปริมาณรูปทรงบล็อกของพื้นที่ด้วย Enum.Material และ CFrame และขนาดของพื้นที่

  • เขียนพร้อมๆ กัน

    ส่งคืนสีวัสดุพื้นที่ปัจจุบันสำหรับวัสดุพื้นที่ที่กำหนดไว้

  • PasteRegion(region : TerrainRegion,corner : Vector3int16,pasteEmptyCells : boolean):()

    ใช้ส่วนของพื้นที่กับวัตถุพื้นที่ โปรดทราบ: TerrainRegion ข้อมูลไม่ซ้ำระหว่างเซิร์ฟเวอร์และไคลเอนต์

  • ReadVoxelChannels(region : Region3,resolution : number,channelIds : Array):Dictionary
    เขียนพร้อมๆ กัน

    ส่งคืนภูมิภาคของข้อมูล voxel พื้นดินในรูปแบบตารางตามชื่อช่องทาง

  • ReadVoxels(region : Region3,resolution : number):Tuple
    เขียนพร้อมๆ กัน

    ส่งคืนภูมิประเทศบางพื้นที่ในรูปแบบตารางในตาราง

  • ReadVoxelsAsync_beta(region : Region3,resolution : number,channelIds : Array):TerrainReadOperation
  • ReplaceMaterial(region : Region3,resolution : number,sourceMaterial : Enum.Material,targetMaterial : Enum.Material):()

    เปลี่ยนพื้นที่ของวัสดุภายในภูมิภาคด้วยวัสดุอื่น

  • SetMaterialColor(material : Enum.Material,value : Color3):()

    ตั้งสีวัสดุพื้นที่ปัจจุบันสำหรับวัสดุพื้นที่ที่กำหนดไว้

  • ส่งคืนตำแหน่งเซลล์กริดที่มีจุด ตำแหน่ง

  • คืนตำแหน่งเซลล์กริดที่มีตำแหน่งจุด โดยให้ความสำคัญกับเซลล์กริดว่างเมื่อตำแหน่งอยู่บนขอบกริด

  • คืนตำแหน่งเซลล์กริดที่มีตำแหน่งจุด โดยให้ความสำคัญกับเซลล์กริดที่ไม่ว่างเปล่าเมื่อตำแหน่งอยู่บนขอบกริด

  • WriteVoxelChannels(region : Region3,resolution : number,channels : Dictionary):()

    ตั้งภูมิภาคของพื้นดินโดยใช้สารบัญของข้อมูลช่องวอกเซล

  • WriteVoxels(region : Region3,resolution : number,materials : Array,occupancy : Array):()

    ตั้งภูมิประเทศบางพื้นที่โดยใช้รูปแบบตาราง

  • WriteVoxelsAsync_beta(region : Region3,resolution : number,channelIds : Array):TerrainWriteOperation
วิธีการรับทอดมาจากBasePart
  • AngularAccelerationToTorque(angAcceleration : Vector3,angVelocity : Vector3):Vector3
  • ใช้แรงกระตุกแบบมุมกับการประกอบ

  • ApplyImpulse(impulse : Vector3):()

    ใช้แรงกระตุ้นกับการประกอบที่การประกอบ center of mass .

  • ApplyImpulseAtPosition(impulse : Vector3,position : Vector3):()

    ใช้แรงกระตุ้นกับการประกอบในตำแหน่งที่กำหนด

  • เขียนพร้อมๆ กัน

    ส่งคืนว่าชิ้นส่วนสามารถชนกันได้หรือไม่

  • ตรวจสอบว่าคุณสามารถกำหนดสิทธิ์เจ้าของเครือข่ายส่วนได้หรือไม่

  • GetConnectedParts(recursive : boolean):Instances
    เขียนพร้อมๆ กัน

    คืนตารางชิ้นส่วนที่เชื่อมโยงกับวัตถุโดยใช้ข้อต่อแข็งใดๆ

  • GetJoints():Instances
    เขียนพร้อมๆ กัน

    คืนข้อต่อหรือข้อจำกัดทั้งหมดที่เชื่อมโยงกับส่วนนี้

  • เขียนพร้อมๆ กัน

    ส่งค่าของคุณสมบัติ Mass กลับ

  • เขียนพร้อมๆ กัน

    ส่งคืนผู้เล่นปัจจุบันที่เป็นเจ้าของเครือข่ายส่วนนี้หรือ nil ในกรณีของเซิร์ฟเวอร์

  • เขียนพร้อมๆ กัน

    ส่งคืนค่าจริงหากเครื่องเกมตัดสินเจ้าของเครือข่ายสำหรับส่วนนี้โดยอัตโนมัติ

  • เขียนพร้อมๆ กัน

    คืนส่วนฐานของการประกอบชิ้นส่วน

  • GetTouchingParts():Instances

    คืนตารางของชิ้นส่วนทั้งหมด BasePart.CanCollide ที่ถูกตัดกับชิ้นส่วนนี้

  • เขียนพร้อมๆ กัน

    คืนความเร็วเชิงเส้นของการประกอบชิ้นส่วนในตำแหน่งที่กำหนดเมื่อเทียบกับชิ้นส่วนนี้

  • เขียนพร้อมๆ กัน

    ส่งคืนจริงหากวัตถุเชื่อมต่อกับส่วนที่จะถือไว้ในตําแหน่ง (เช่นส่วน Anchored ) มิฉะนั้นจะส่งคืนเป็นเท็จ

  • Resize(normalId : Enum.NormalId,deltaAmount : number):boolean

    เปลี่ยนขนาดของวัตถุเช่นเดียวกับการใช้เครื่องมือปรับขนาดของ Studio

  • SetNetworkOwner(playerInstance : Player):()

    ตั้งผู้เล่นที่กำหนดเป็นเจ้าของเครือข่ายสำหรับส่วนที่เชื่อมต่อทั้งหมดและส่วนนี้

  • ให้เครื่องเกมตัดสินได้อย่างไดนามิกว่าใครจะจัดการกับฟิสิกส์ของชิ้นส่วน (หนึ่งในไคลเอนต์หรือเซิร์ฟเวอร์)

  • IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
    ผลตอบแทน

    สร้างใหม่ IntersectOperation จากเรขาคณิตที่ซ้อนทับของชิ้นส่วนและชิ้นส่วนอื่นๆ ในช่วงที่กำหนด

  • SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
    ผลตอบแทน

    สร้างใหม่ UnionOperation จากส่วนโดยลบเอกภาพที่ใช้โดยชิ้นส่วนในช่องที่กำหนด

  • UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
    ผลตอบแทน

    สร้างใหม่ UnionOperation จากส่วน, บวกกับรูปร่างที่ใช้โดยชิ้นส่วนในช่วงที่กำหนด

วิธีการรับทอดมาจากPVInstance
  • เขียนพร้อมๆ กัน

    รับจุดศูนย์กลางของ PVInstance .

  • PivotTo(targetCFrame : CFrame):()

    เปลี่ยน PVInstance พร้อมกับบรรดาลูกหลานทั้งหมดของมัน PVInstances ทำให้จุดศูนย์กลางอยู่ที่ตําแหน่งที่ระบุแล้ว CFrame

อีเวนต์

อีเวนต์รับทอดมาจากBasePart
  • ไฟเมื่อชิ้นหยุดสัมผัสอีกชิ้นเนื่องจากการเคลื่อนไหวทางกายภาพ

  • ไฟเมื่อชิ้นส่วนสัมผัสกับชิ้นส่วนอื่นเนื่องจากการเคลื่อนไหวทางกายภาพ

คุณสมบัติ

Decoration

ไม่สามารถเขียนสคริปต์
อ่านพร้อมๆ กัน

ปัจจุบันเปิดใช้งานหรือปิดใช้งานหญ้าเคลื่อนไหวบนพื้นที่วัตถุ หญ้า แม้ว่าการแก้ไขคุณสมบัตินี้ในอนาคตอาจควบคุมคุณลักษณะตกแต่งเพิ่มเติมก็ตาม

GrassLength

ไม่สามารถเขียนสคริปต์
อ่านพร้อมๆ กัน

ระบุระยะเวลาของหญ้าเคลื่อนไหวบนวัสดุพื้นที่ หญ้า โดยคาดว่า Decoration จะเปิดใช้งาน มูลค่าที่ถูกต้องอยู่ระหว่าง 0.1 และ 1

MaterialColors

BinaryString
ไม่สามารถเขียนสคริปต์
อ่านพร้อมๆ กัน

MaterialColors เป็นตัวแทนของเอดิเตอร์สำหรับคุณลักษณะสีวัสดุและ ไม่สามารถแก้ไขโดยสคริปต์ได้ เพื่อรับสีของวัสดุใช้: Terrain:GetMaterialColor()

เพื่อตั้งสีของวัสดุให้ใช้: Terrain:SetMaterialColor()

MaxExtents

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

แสดงขอบเขตของภูมิภาคที่แก้ไขได้ใหญ่ที่สุดที่เป็นไปได้

WaterColor

อ่านพร้อมๆ กัน

สีย้อมของน้ําพื้นที่

WaterReflectance

อ่านพร้อมๆ กัน

ควบคุมว่าการสะท้อนน้ําของพื้นที่มืดมนเพียงใด

WaterTransparency

อ่านพร้อมๆ กัน

ความโปร่งใสของน้ําพื้นที่

WaterWaveSize

อ่านพร้อมๆ กัน

ตั้งค่าความสูงสูงสุดของคลื่นน้ําในพื้นที่ในสตัด นี่ปัจจุบันถูกจํากัดระหว่าง 0 และ 1

WaterWaveSpeed

อ่านพร้อมๆ กัน

ตั้งค่าจำนวนครั้งที่คลื่นน้ําในพื้นที่จะย้ายขึ้นและลงต่อนาที ขณะนี้จํากัดอยู่ระหว่าง 0 และ 100

วิธีการ

CellCenterToWorld

ส่งคืนตำแหน่งโลกของศูนย์กลางของเซลล์พื้นที่ (x, y, z)

พารามิเตอร์

ค่าเริ่มต้น: ""
ค่าเริ่มต้น: ""
ค่าเริ่มต้น: ""

ส่งค่ากลับ

CellCornerToWorld

คืนตำแหน่งของมุมด้านล่างซ้ายไปข้างหน้าของเซลล์กริด (x, y, z)

พารามิเตอร์

ค่าเริ่มต้น: ""
ค่าเริ่มต้น: ""
ค่าเริ่มต้น: ""

ส่งค่ากลับ

Clear

()

ล้างพื้นที่


ส่งค่ากลับ

()

ClearVoxelsAsync_beta

()

พารามิเตอร์

region: Region3
ค่าเริ่มต้น: ""
channelIds: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

CopyRegion

บันทึกชิ้นส่วนของพื้นที่เป็นวัตถุ TerrainRegion เพื่อให้สามารถโหลดกลับได้ในภายหลังหมายเหตุ: TerrainRegion ข้อมูลไม่ซ้ำกันระหว่างเซิร์ฟเวอร์และไคลเอนต์

พารามิเตอร์

region: Region3int16
ค่าเริ่มต้น: ""

ส่งค่ากลับ

ตัวอย่างโค้ด

The following code will copy the whole Terrain and clear it. After 5 seconds it will paste the terrain back.

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

คืนจํานวนเซลล์ที่ไม่ว่างเปล่าในพื้นที่


ส่งค่ากลับ

FillBall

()

เติมลูกบอลของพื้นที่ราบเรียบในพื้นที่ที่กำหนด

พารามิเตอร์

center: Vector3

ตำแหน่งศูนย์กลางของลูกบอลพื้นที่

ค่าเริ่มต้น: ""
radius: number

รัศมีในสตัดของลูกบอลพื้นที่

ค่าเริ่มต้น: ""
material: Enum.Material

The Enum.Material ของลูกบอลพื้นที่

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

Terrain:FillBall() creates a ball of terrain given a center position, ball radius, and terrain materials.

Filling a Ball of Terrain

local Workspace = game:GetService("Workspace")
-- Creates a ball of grass at (0,0,-10) with a radius of 10 studs
Workspace.Terrain:FillBall(Vector3.new(0, 0, -10), 10, Enum.Material.Grass)

FillBlock

()

เติมบล็อกของพื้นที่ราบเรียบด้วยตำแหน่งที่กำหนด การหมุน ขนาด และวัสดุ

พารามิเตอร์

cframe: CFrame

ตำแหน่งและทิศทางของบล็อกพื้นที่

ค่าเริ่มต้น: ""
size: Vector3

ขนาดในสตัดของบล็อกสี่เหลี่ยม - ทั้งความสูงและความกว้าง

ค่าเริ่มต้น: ""
material: Enum.Material

The Enum.Material ของบล็อกพื้นที่

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

FillCylinder

()

เติมทรงกระบอกของพื้นที่ราบเรียบในพื้นที่ที่กำหนด พื้นที่จะถูกกำหนดโดยใช้ CFrame, ความสูง และรัศมี


local Workspace = game:GetService("Workspace")
Workspace.Terrain:FillCylinder(CFrame.new(0, 50, 0), 5, 30, Enum.Material.Asphalt)

พารามิเตอร์

cframe: CFrame

ตำแหน่งและทิศทางของทรงกระบอกพื้นที่

ค่าเริ่มต้น: ""
height: number

ความสูงในสตัดของทรงกระบอกพื้นที่

ค่าเริ่มต้น: ""
radius: number

รัศมีในสตัดของทรงกระบอกพื้นที่

ค่าเริ่มต้น: ""
material: Enum.Material

The Enum.Material ของทรงกระบอกพื้นที่

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

FillRegion

()

เติมพื้นที่ Region3 ด้วยพื้นที่ลาดเรียบ

พารามิเตอร์

region: Region3
ค่าเริ่มต้น: ""
resolution: number
ค่าเริ่มต้น: ""
material: Enum.Material
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

FillWedge

()

FillWedge() เติมปริมาณรูปทรงบล็อกของ Terrain ด้วย Enum.Material และขนาดของพื้นที่ CFrame และขนาดทิศทางของบล็อกลิ่มเป็นเช่นเดียวกับที่เทียบเท่า WedgePart

พารามิเตอร์

cframe: CFrame

ตำแหน่งและทิศทางของบล็อกลิ่มที่จะเติม

ค่าเริ่มต้น: ""
size: Vector3

ขนาดของบล็อกลิ่นที่จะเติม

ค่าเริ่มต้น: ""
material: Enum.Material

วัสดุที่จะเติมบล็อกลิ่ม

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

GetMaterialColor

เขียนพร้อมๆ กัน

ส่งคืนสีวัสดุพื้นที่ปัจจุบันสำหรับวัสดุพื้นที่ที่กำหนดไว้

พารามิเตอร์

material: Enum.Material
ค่าเริ่มต้น: ""

ส่งค่ากลับ

IterateVoxelsAsync_beta

พารามิเตอร์

region: Region3
ค่าเริ่มต้น: ""
resolution: number
ค่าเริ่มต้น: ""
channelIds: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

ModifyVoxelsAsync_beta

พารามิเตอร์

region: Region3
ค่าเริ่มต้น: ""
resolution: number
ค่าเริ่มต้น: ""
channelIds: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

PasteRegion

()

ใช้ส่วนของพื้นที่กับวัตถุพื้นที่ โปรดทราบ: TerrainRegion ข้อมูลไม่ซ้ำระหว่างเซิร์ฟเวอร์และไคลเอนต์

พารามิเตอร์

ค่าเริ่มต้น: ""
corner: Vector3int16
ค่าเริ่มต้น: ""
pasteEmptyCells: boolean
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

Creates some terrain, copies it, then pastes it using the following API:

Create, Copy and Paste Terrain

--[[
Note: The use of int16 variants for these API is the result of legacy code.
The underlying voxel grid system uses Vector3int32 (Vector3).
]]
local Workspace = game:GetService("Workspace")
local Terrain = Workspace.Terrain
-- Create a simple terrain region (a 10x10x10 block of grass)
local initialRegion = Region3.new(Vector3.zero, Vector3.one * 10)
Terrain:FillRegion(initialRegion, 4, Enum.Material.Grass)
-- Copy the region using Terrain:CopyRegion
local copyRegion = Region3int16.new(Vector3int16.new(0, 0, 0), Vector3int16.new(10, 10, 10))
local copiedRegion = Terrain:CopyRegion(copyRegion)
-- Define where to paste the region (in this example, offsetting by 5 studs on the X-axis)
local newRegionCorner = Vector3int16.new(5, 0, 0)
-- Paste the region using Terrain:PasteRegion
Terrain:PasteRegion(copiedRegion, newRegionCorner, true)

ReadVoxelChannels

เขียนพร้อมๆ กัน

ส่งคืนภูมิภาคของข้อมูล voxel พื้นดินในรูปแบบตารางตามชื่อช่องทาง

พารามิเตอร์

region: Region3

ภูมิภาคเป้าหมายที่จะอ่านจาก ต้องสอดคล้องกับกริดวอกเซล จะโยนข้อผิดพลาดหากภูมิภาคใหญ่เกินไป; ขีดจํากัดปัจจุบันคือ 4194304 วอกเซล³

ค่าเริ่มต้น: ""
resolution: number

ความละเอียดของวอกเซล ต้องเป็น 4

ค่าเริ่มต้น: ""
channelIds: Array

รายการช่อง ID (สตริง) ที่ต้องเข้าถึงจากข้อมูล voxelแต่ละรหัสช่องเป็นตัวแทนของประเภทข้อมูลที่จัดเก็บไว้ใน voxelID ที่สนับสนุนปัจจุบันคือ {"SolidMaterial", "SolidOccupancy", "LiquidOccupancy"} .

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ส่งคืนข้อมูล voxel เป็นสารานุกรมตามอินพุต channelIds คีย์แทนที่รหัสช่องแต่ละรายการด้วยค่าที่เป็นอาร์เรย์ของข้อมูล 3D

  • SolidMaterial — วัสดุของ voxel Enum.Materialโปรดทราบว่า Water ไม่สนับสนุนอีกต่อไป; แทนที่จะมีค่าของ voxel ที่มีน้ําอยู่จะมีค่าเป็น LiquidOccupancy
  • SolidOccupancy — การใช้งานของวัสดุของ voxel ตามที่ระบุไว้ในช่อง SolidMaterial นี่คือค่าระหว่าง 0 (ว่างเปล่า) และ 1 (เต็ม)
  • LiquidOccupancy — กำหนดการใช้พื้นที่ของวัสดุ Water ในโวเซลเป็นค่าระหว่าง 0 (ไม่มีน้ำ) และ 1 (เต็มไปด้วยน้ำ)หาก SolidOccupancy เป็น 1 และ SolidMaterial ไม่ใช่ Air จะเป็น 0

สารานุกรมยังมีกุญแจ Size ที่มีค่าเป็นขนาดแผง 3D ของข้อมูลแต่ละช่อง

ตัวอย่างโค้ด

พื้นที่: อ่าน VoxelChannels()

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, { "SolidOccupancy", "SolidMaterial", "LiquidOccupancy" })
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

เขียนพร้อมๆ กัน

ส่งคืนภูมิประเทศบางพื้นที่ในรูปแบบตารางในตาราง

พารามิเตอร์

region: Region3

ภูมิภาคเป้าหมายที่จะอ่านจาก ต้องสอดคล้องกับกริดวอกเซล จะโยนข้อผิดพลาดหากภูมิภาคมีขนาดใหญ่เกินไป ขีดจํากัดปัจจุบันคือ 4194304 วอกเซล^3

ค่าเริ่มต้น: ""
resolution: number

ความละเอียดของวอกเซล ต้องเป็น 4

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ส่งคืนข้อมูล voxel ดิบเป็นสองอาร์เรย์ 3D

  • materials - 3D ของ Enum.Material จากพื้นที่เป้าหมาย รวมถึงฟิลด์ขนาดเท่ากับขนาดของอาร์เรย์ซ้อนกัน
  • occupancies - 3D ของมูลค่าการใช้งานจากพื้นที่เป้าหมาย รวมถึงฟิลด์ขนาดเท่ากับขนาดของอาร์เรย์ซ้อนกัน

ตัวอย่างโค้ด

สถานที่: ตัวอย่างโค้ด ReadVoxels()

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 -- เหมือนกับการเข้าพัก.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)

ReadVoxelsAsync_beta

พารามิเตอร์

region: Region3
ค่าเริ่มต้น: ""
resolution: number
ค่าเริ่มต้น: ""
channelIds: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

ReplaceMaterial

()

เปลี่ยนวัสดุเปลี่ยนพื้นที่ของบางสิ่งบางอย่าง Enum.Material ภายใน Region3 ด้วยวัสดุอื่นโดยพื้นฐานแล้วเป็นการค้นหาและแทนที่บนวัสดุ Terrain

ข้อจํากัด

เมื่อเรียกวิธีนี้ พารามิเตอร์ resolution จะต้องเป็น 4 อย่างแน่นอนนอกจากนี้ ภูมิภาค 3 ต้องสอดคล้องกับกริดวัสดุพื้นที่ เช่นส่วนประกอบของจุดต่ำสุดและสูงสุดของภูมิภาค 3 ต้องแบ่งได้โดย 4ใช้ Region3:ExpandToGrid() เพื่อทำให้ภูมิภาคสอดคล้องกับฟังก์ชันนี้

พารามิเตอร์

region: Region3

ภูมิภาคที่การดำเนินการแทนที่จะเกิดขึ้น

ค่าเริ่มต้น: ""
resolution: number

ความละเอียดที่การดำเนินการแทนที่จะเกิดขึ้น; ในขณะนี้จะต้องเป็นตัวเลขที่แน่นอน 4

ค่าเริ่มต้น: ""
sourceMaterial: Enum.Material

วัสดุเก่าที่จะถูกแทนที่

ค่าเริ่มต้น: ""
targetMaterial: Enum.Material

วัสดุใหม่

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

This code sample demonstrates the usage of Terrain:ReplaceMaterial() by replacing grass near the game origin with asphalt. It does this by constructing a Region3 using two Vector3s.

Terrain:ReplaceMaterial

local Workspace = game:GetService("Workspace")
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)

SetMaterialColor

()

ตั้งสีวัสดุพื้นที่ปัจจุบันสำหรับวัสดุพื้นที่ที่กำหนดไว้ วัสดุพื้นที่จะเปลี่ยนสีฐานไปสู่สีที่กำหนดไว้

พารามิเตอร์

material: Enum.Material
ค่าเริ่มต้น: ""
value: Color3
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

WorldToCell

ส่งคืนตำแหน่งเซลล์กริดที่มีจุด ตำแหน่ง

พารามิเตอร์

position: Vector3
ค่าเริ่มต้น: ""

ส่งค่ากลับ

WorldToCellPreferEmpty

คืนตำแหน่งเซลล์กริดที่มีตำแหน่งจุด โดยให้ความสำคัญกับเซลล์กริดว่างเมื่อตำแหน่งอยู่บนขอบกริด

พารามิเตอร์

position: Vector3
ค่าเริ่มต้น: ""

ส่งค่ากลับ

WorldToCellPreferSolid

คืนตำแหน่งเซลล์กริดที่มีตำแหน่งจุด โดยให้ความสำคัญกับเซลล์กริดที่ไม่ว่างเปล่าเมื่อตำแหน่งอยู่บนขอบกริด

พารามิเตอร์

position: Vector3
ค่าเริ่มต้น: ""

ส่งค่ากลับ

WriteVoxelChannels

()

ตั้งภูมิภาคของพื้นดินโดยใช้สารบัญของข้อมูลช่องวอกเซล

พารามิเตอร์

region: Region3

ภูมิภาคเป้าหมายที่จะเขียน ต้องสอดคล้องกับกริดวอกเซล จะโยนข้อผิดพลาดหากภูมิภาคใหญ่เกินไป; ขีดจํากัดปัจจุบันคือ 4194304 วอกเซล³

ค่าเริ่มต้น: ""
resolution: number

ความละเอียดของวอกเซล ต้องเป็น 4

ค่าเริ่มต้น: ""
channels: Dictionary

สารานุกรมของข้อมูล voxel ที่คล้ายกับค่ากลับของ ReadVoxelChannels()กุญแจแทนที่รหัสช่องแต่ละรายการด้วยค่าที่เป็นอาร์เรย์ของข้อมูล 3D ตามลำดับสารานุกรมสามารถสนับสนุนการใส่ช่องเดียวหรือหลายช่องได้

  • SolidMaterial — วัสดุของ voxel Enum.Materialโปรดทราบว่า Water ไม่ได้รับการสนับสนุนอีกต่อไป; แทนที่จะใส่วอกเซลที่มีเฉพาะน้ําเท่านั้นเป็น SolidMaterial = Enum.Material.Air, LiquidOccupancy = x ซึ่ง x เป็นตัวเลขระหว่าง 0 (พิเศษ) และ 1 (รวม)
  • SolidOccupancy — การใช้วัสดุของวอกเซลตามที่ระบุไว้ในช่อง SolidMaterial นี้ควรเป็นค่าระหว่าง 0 (ว่างเปล่า) และ 1 (เต็ม)
  • LiquidOccupancy — กำหนดการใช้พื้นที่ของวัสดุ Water ในโวเซลเป็นค่าระหว่าง 0 (ไม่มีน้ำ) และ 1 (เต็มไปด้วยน้ำ)หาก SolidOccupancy เป็น 1 และ SolidMaterial ไม่ใช่ Air จะเป็น 0
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

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 -- Solids cannot contain water
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

()

ตั้งภูมิประเทศบางพื้นที่โดยใช้รูปแบบตาราง

พารามิเตอร์

region: Region3

ภูมิภาคเป้าหมายที่จะเขียนลง ต้องสอดคล้องกับกริดวอกเซล จะเกิดข้อผิดพลาดหากภูมิภาคใหญ่เกินไป

ค่าเริ่มต้น: ""
resolution: number

ความละเอียดของวอกเซล ต้องเป็น 4

ค่าเริ่มต้น: ""
materials: Array

รายการ 3D ของ Enum.Material. มิติต้องตรงกับขนาดของภูมิภาคเป้าหมายในโวเซลอย่างแม่นยำ

ค่าเริ่มต้น: ""
occupancy: Array

3D ของความเต็มของ voxel (ตัวเลขระหว่าง 0 และ 1) มิติต้องตรงกับขนาดของภูมิภาคเป้าหมายใน voxels อย่างแม่นยำ

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

ตัวอย่าง

ตัวอย่าง

local Workspace = game:GetService("Workspace")
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)

Many terrain methods throw an error if their given region size is too large. The limit is currently 4194304 voxels^3 for ReadVoxels() and WriteVoxels(), and 67108864 voxels^3 for other methods. For methods that take a cframe + size combination (e.g. FillBlock, FillCylinder etc.), then the region volume is calculated from the AABB of the target area.

Maximum Region Size

local REGION_START = Vector3.new(-20, -20, -20)
local REGION_END = Vector3.new(20, 20, 20)
local CFRAME = CFrame.new(0, 20, 0)
local SIZE = 50
local function getRegionVolumeVoxels(region)
local resolution = 4
local size = region.Size
return (size.x / resolution) * (size.y / resolution) * (size.z / resolution)
end
local function isRegionTooLargeForReadWriteVoxels(region)
return getRegionVolumeVoxels(region) > 4194304
end
local function isRegionTooLarge(region)
return getRegionVolumeVoxels(region) > 67108864
end
-- Helper function to get an axis-aligned Region3 from the given cframe and size
local function getAABBRegion(cframe, size)
local inv = cframe:Inverse()
local x = size * inv.RightVector
local y = size * inv.UpVector
local z = size * inv.LookVector
local w = math.abs(x.X) + math.abs(x.Y) + math.abs(x.Z)
local h = math.abs(y.X) + math.abs(y.Y) + math.abs(y.Z)
local d = math.abs(z.X) + math.abs(z.Y) + math.abs(z.Z)
local pos = cframe.Position
local halfSize = Vector3.new(w, h, d) / 2
return Region3.new(pos - halfSize, pos + halfSize):ExpandToGrid(4)
end
-- Specific functions for checking individual methods
local function isRegionTooLargeForFillBall(cframe, radius)
local diameter = radius * 2
return isRegionTooLarge(getAABBRegion(cframe, Vector3.new(diameter, diameter, diameter)))
end
local function isRegionTooLargeForFillBlock(cframe, size)
return isRegionTooLarge(getAABBRegion(cframe, size))
end
local function isRegionTooLargeForFillCylinder(cframe, height, radius)
local diameter = radius * 2
return isRegionTooLarge(getAABBRegion(cframe, Vector3.new(diameter, height, diameter)))
end
local function isRegionTooLargeForFillRegion(region)
return isRegionTooLarge(region)
end
local function isRegionTooLargeForFillWedge(cframe, size)
return isRegionTooLarge(getAABBRegion(cframe, size))
end
local function isRegionTooLargeForReplaceMaterial(region)
return isRegionTooLarge(region)
end
local region = Region3.new(REGION_START, REGION_END)
print(isRegionTooLargeForReadWriteVoxels(region))
print(isRegionTooLargeForFillBall(CFRAME, SIZE))
print(isRegionTooLargeForFillBlock(CFRAME, SIZE))
print(isRegionTooLargeForFillCylinder(CFRAME, SIZE, SIZE))
print(isRegionTooLargeForFillRegion(region))
print(isRegionTooLargeForFillWedge(CFRAME, SIZE))
print(isRegionTooLargeForReplaceMaterial(region))

WriteVoxelsAsync_beta

พารามิเตอร์

region: Region3
ค่าเริ่มต้น: ""
resolution: number
ค่าเริ่มต้น: ""
channelIds: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

อีเวนต์